解决构建警告 - “#include指令末尾的额外令牌”

时间:2011-11-23 18:58:50

标签: c struct compiler-warnings suppress-warnings

我正在测试我在上一个问题中尝试过的解决方案:Use typedef within struct for naming and indexing text commands

但是,我想将编译器警告保留为无。我为此目的使用静态代码分析工具,对于某些工具(即:LINT),我可以在评论中使用标记手动排除每行的某些规则和警告。

在第一个/最佳答案的情况下,我尝试了这个解决方案,但修改了最终结构,如下所示:

struct command commands[] =
{
#include "commands.inc",
{NULL, NULL}
};

这样我就可以知道,在搜索过程中,我是否已经到达了这个struct-of-struct中最大的可寻址成员,并且没有得到越界条件。问题是我知道有一个编译器警告,“警告:#include指令末尾的额外令牌”。有没有办法禁用此警告?我喜欢这个解决方案,它非常适合我的需求。



最后,我将.inc文件更新为:

CMD(list),
CMD(quit),
CMD(start),

而不是

CMD(list),
CMD(quit),
CMD(start)

然后,我能够从宏定义和静态初始化代码中删除尾随逗号。

2 个答案:

答案 0 :(得分:13)

您应该删除#include指令末尾的逗号。它不应该存在。

答案 1 :(得分:1)

可能对尾随的逗号感到不满。尝试:

struct command commands[] =
{
#include "commands.inc"
, {NULL, NULL}
};