代码示例:
int main(int argc, char **argv)
{
switch(argc)
{
case 0:
argc = 5;
__attribute__((fallthrough));
case 1:
break;
}
}
使用gcc 6.3.0,只使用-std=c11
,此代码会产生一个警告:
<source>: In function 'main':
7 : <source>:7:3: warning: empty declaration
__attribute__((fallthrough));
^~~~~~~~~~~~~
如何正确使用此功能,而不触发警告?
fallthrough
。我认为它在6.3中根本不被支持。诊断结果是因为GCC不仅仅忽略未知属性,而且将其视为违反此约束的声明(违反了这个约束)。 - StoryTeller - Unslander Monica