编译错误: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},


继续发个来问问,幸好俺分多啊。
...全文
4782 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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吧,
这样直接用""赋值就肯定没有问题了.

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧