我们最近失去了在C编译器上测试代码的能力,这些代码需要在范围块的开头发生变量声明。
在源代码开始被任何块中的任何位置的声明入侵之前,它没需要很长时间。这些编码风格的差异暂时没有被注意到,因为我们的警告都没有发现它们。但它们对我们的可移植性目标非常不利。
目前正在努力恢复我们使用此限制对C编译器进行连续测试的能力。但与此同时,我试图找到一些可以帮助检测它的gcc警告标志组合。
-std=c90
或-pedantic
会检测到这种情况,但它们也会产生大量其他不必要的警告。例如,我想授权//
评论样式,或枚举器列表末尾的逗号,或(...)
可变参数宏或long long
类型。
有时可以关闭某些特定警告(-Wno-long-long
或-Wno-variadic-macros
),有时我找不到任何(//
评论样式)。
启用一组警告并禁用大部分警告只是为了保留相关警告,这听起来很愚蠢。但如果这是唯一的可能性,我就可以了。
答案 0 :(得分:2)
-Wdeclaration-after-statement
是您想要的gcc选项。从手册页:
在块中的语句后找到声明时发出警告。这个 从C ++开始,已经使用ISO C99引入了构造,并且是 GCC允许默认。 ISO C90不支持它,但没有 在GCC 3.0之前由GCC版本支持。