【发布时间】:2020-05-12 13:59:15
【问题描述】:
我在我的 C 代码中经常使用字符串文字表。这些表或多或少都像这样:
static const char* const stateNames[STATE_AMOUNT] =
{
"Init state",
"Run state",
"Pause state",
"Error state",
};
上面代码的问题是,如果表格变长了,在开发过程中被修改了,我时不时会忘记逗号。代码编译时没有逗号,但我的程序最终崩溃,因为最后一个字符串设置为NULL。我使用了 MinGW 和 Keil 编译器来验证。
如果缺少逗号,是否有任何方法可以为我的初始化生成编译器警告?
【问题讨论】:
-
当您忘记向该表添加状态时会发生什么?
-
@Jeroen3 true 这会导致同样的错误。使用静态断言针对 STATE_AMOUNT 测试列表长度也可以解决此问题。
标签: c initialization