我在C代码中经常使用字符串文字表。这些表或多或少看起来像这样:
static const char* const stateNames[STATE_AMOUNT] =
{
"Init state",
"Run state",
"Pause state",
"Error state",
};
上面代码的问题是,如果表变长了,并且在开发过程中被修改了,我会不时忘记逗号。代码编译时不会出现逗号缺失的问题,但是由于最后一个字符串设置为,我的程序最终崩溃了NULL
。我使用了MinGW和Keil编译器进行了验证。
如果缺少逗号,有什么方法可以为我的初始化生成编译器警告吗?
1
当您根本忘记为表添加状态时会发生什么?
—
Jeroen3
@ Jeroen3是的,这将导致相同的错误。使用静态断言针对STATE_AMOUNT测试列表长度也可以解决此问题。
—
乔尼·舒伯特