我想问你:静态结构的元素是否初始化为零?例如:
static struct _radioSettings
{
unsigned char radio_in;
unsigned char radio_out;
}radioSettings;因此,这个结构被放置在模块无线电设置.c中,如果radioSettings.radio_in和radioSettings.radio_out在编译时未初始化为零,我如何在模块无线电设置中初始化它们?
发布于 2015-05-04 07:53:00
静态,在C中,与结构的可见性有关,它除了从外部模块radio-settings.c中不可见之外,没有其他任何意义。
C中的结构是,而不是初始化为任何东西的。其字段的值是结构落在的内存值。所以,你不能指望这样的事情。
如果您想初始化结构,那么它很简单:
memset( &radioSettings, 0, sizeof( _radioSettings ) );您只需将其放在radioSettings的radioSettings函数中,即模块radio-settings.c中。
希望这能有所帮助。
发布于 2015-05-04 08:12:15
所有全局变量都初始化为默认值。
C99标准(n1256)的6.7.8节初始化内容如下:
如果没有显式初始化具有自动存储持续时间的对象,则其值是不确定的。如果没有显式初始化具有静态存储持续时间的对象,则: -如果它具有指针类型,则初始化为空指针; -如果它有算术类型,则初始化为(正或无符号)零; -如果是一个集合,则根据这些规则(递归)初始化每个成员; -如果是一个联合,则根据这些规则初始化(递归)第一个指定的成员。
因此,对于您的结构,每个字段都被初始化为其默认值,即。
https://stackoverflow.com/questions/30025011
复制相似问题