编译错误:warning: missing braces around initializer

kiko_lee 2005-04-30 11:24:19
代码摘要:
---------------
typedef struct {
char name[ENTRY_NAME_SIZE];
int priority;
int options;
int stackSize;
FUNCPTR entryFunc;
char msgQName[ENTRY_NAME_SIZE];
char semaName[ENTRY_NAME_SIZE];
int arg1;
int arg2;
} TASK_ENTRY;

TASK_ENTRY gTaskTable[] = {
{"Telnetd",100,0,64*1024,(FUNCPTR)telnetd,0,0,0,0},
{"SnmpTrap",105,0,64*1024,(FUNCPTR)snmpTrapMain,0,0,0,0},
{"Alarm",110,0,64*1024,(FUNCPTR)ALARM_Callback,0,0,0,0},
{"Snmpd",111,0,64*1024,(FUNCPTR)snmpdMain,0,0,0,0}
};


编译选项中
CFLAGS += -Werror -Wall
编译过程中没有error的错误。

出现的警告

main.c:145: warning: missing braces around initializer
main.c:145: warning: (near initialization for `gTaskTable[0].msgQName')

其中 line 145就是
{"Telnetd",100,0,64*1024,(FUNCPTR)telnetd,0,0,0,0},


继续发个来问问,幸好俺分多啊。
...全文
2958 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
qrlvls 2005-04-30
char msgQName[ENTRY_NAME_SIZE];
这是一个数组,你只赋给了一个0
回复
dongfa 2005-04-30
把0改为""试试.

TASK_ENTRY gTaskTable[] = {
{"Telnetd",100,0,64*1024,(FUNCPTR)telnetd,"","",0,0},
{"SnmpTrap",105,0,64*1024,(FUNCPTR)snmpTrapMain,"","",0,0},
{"Alarm",110,0,64*1024,(FUNCPTR)ALARM_Callback,"","",0,0},
{"Snmpd",111,0,64*1024,(FUNCPTR)snmpdMain,"","",0,0}
};
回复
kiko_lee 2005-04-30
严格一些,为什么会有警告呢,怎么去掉这个警告。
回复
kiko_lee 2005-04-30
严格一些,为什么会有警告呢,怎么去掉这个警告。
回复
nasi00 2005-04-30
warning阿,程序没错就行了,至于是否有bug测试一下就好了
回复
xuzheng318 2005-04-30
不是bug,只是警告,去掉就可以!
回复
power77 2005-04-30
把0改成NULL试试?对字符串赋0好像最好用NULL吧。
不是很懂。
mark
回复
zhang_jiang 2005-04-30
这只是一个警告, 不是错误.
回复
kiko_lee 2005-04-30
果然,果然,谢谢了。
回复
boxban 2005-04-30
改成这样就好了:

TASK_ENTRY gTaskTable[] = {
{"Telnetd",100,0,64*1024,(FUNCPTR)telnetd,{0},{0},0,0},
{"SnmpTrap",105,0,64*1024,(FUNCPTR)snmpTrapMain,{0},{0},0,0},
{"Alarm",110,0,64*1024,(FUNCPTR)ALARM_Callback,{0},{0},0,0},
{"Snmpd",111,0,64*1024,(FUNCPTR)snmpdMain,{0},{0},0,0}
};

原因如qrlvls(≌AIR⌒LIKE ≤空气≥) ,所述:char msgQName[ENTRY_NAME_SIZE];
这是一个数组,你只赋给了一个0

把0 用{}包起来,可以完成对整个数组的赋值,就像:
char x[100] = {0}; //整个数组全部清零
char y[100] = {'a', 'b'}; //未明确赋值部分填充零

回复
useresu 2005-04-30
楼上说的对,
这样赋值不是很好啊,

一般字符串赋值用strcpy();

赋空值用""也是可以的.

或者你干脆用stl中的string吧,
这样直接用""赋值就肯定没有问题了.
回复
发动态
发帖子
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
社区公告
暂无公告