我想了解为什么有了这个结构定义,我们可以直接使用名称event
为结构成员赋值。我见过其他定义,其中struct
关键字用于分配值。
struct {
int eventNum;
int eventType;
} event;
void function() {
event.eventNum = 10;
}
struct Name {int stuff; int data;} variable;
它与例如int variable;
相同,因此,这是一个普通变量,但具有复杂值,或者如注释中指出的那样,派生类型。
在代码片段中,event
是未命名结构(未初始化的全局变量(的实例。在全局范围内,未初始化的对象将所有成员初始化为其类型的零值。
函数function()
可以使用event
名称来引用此对象,并为其成员之一分配值:event.eventNum = 10;
。
您可能已经看到这样的初始化结构定义:
struct {
int eventNum;
int eventType;
} event = { 10, 0 };
或者像这样的 C99 特异性引发剂:
struct {
int eventNum;
int eventType;
} event = { .eventNum = 10 };
这些定义可以发生在全局或局部范围内,并定义初始化的对象event
。
您声明全局变量event
哪种类型是"无标记">或"不完整">(这是语言律师如何正确称呼它的问题(结构struct { int ventNum; int eventType; }
。由于它是全局变量,因此在整个程序(包括函数(的范围内可见