pmo*_*mod 5 c coding-style coverity-prevent
在一些我无法修改的头文件中,我有以下一组定义:
#define FLAG1 (0x0000_0001)
#define FLAG2 (0x0000_0002)
...
Run Code Online (Sandbox Code Playgroud)
然后,在我的代码中我在switch中使用它们:
switch (aaa) {
case FLAG1:
....
case FLAG2:
....
}
Run Code Online (Sandbox Code Playgroud)
因此,Coverity报告每个案例标签有2个缺陷:
RW.EXP_RPAREN:
Event exp_rparen: expected a ")"
RW.CASE_LABEL_CONFLICT:
Event case_label_conflict: case label value has already appeared in
this switch at line XX
Run Code Online (Sandbox Code Playgroud)
这些案例标签有什么问题?它违反了C标准吗?
是的,正是下划线引起了问题。FWIW,以下是 C 语言标准(草案n1256 )的相关部分:
_不是整型常量的有效字符;switch的限制。caseswitch