【发布时间】:2014-07-21 09:46:16
【问题描述】:
我有一些代码如下
typedef struct _DisplayString
{
char* string;
}DisplayString;
typedef struct _DisplayGroup
{
char groupName[10];
int groupType;
}DisplayGroup;
typedef struct _Info {
int x;
union display
{
DisplayString displayString;
DisplayGroup displayGroup;
}Display;
}Info;
int main(void) {
DisplayString stringType;
DisplayGroup groupType;
Info infoField = { 0, {stringType}};
Info groupFields = { 0, {groupType}};
return 0;
}
我正在尝试初始化结构字段。 我在初始化 groupFields 数据变量的行上遇到编译器错误
gcc -Wall -g settings.c
settings.c: In function ‘main’:
settings.c:29:5: warning: missing braces around initializer [-Wmissing-braces]
settings.c:29:5: warning: (near initialization for ‘groupFields.Display.displayString’) [-Wmissing-braces]
settings.c:29:5: error: incompatible types when initializing type ‘char *’ using type ‘DisplayGroup’
settings.c:29:10: warning: unused variable ‘groupFields’ [-Wunused-variable]
settings.c:28:10: warning: unused variable ‘infoField’ [-Wunused-variable]
为什么会这样?
【问题讨论】:
-
不要使用前导下划线后跟大写字母,这样的名称由规范保留。