确保变量声明仅发生在范围块

时间:2016-05-05 01:54:10

标签: c gcc scope variable-declaration

我们最近失去了在C编译器上测试代码的能力,这些代码需要在范围块的开头发生变量声明。

在源代码开始被任何块中的任何位置的声明入侵之前,它没需要很长时间。这些编码风格的差异暂时没有被注意到,因为我们的警告都没有发现它们。但它们对我们的可移植性目标非常不利。

目前正在努力恢复我们使用此限制对C编译器进行连续测试的能力。但与此同时,我试图找到一些可以帮助检测它的gcc警告标志组合。

-std=c90-pedantic会检测到这种情况,但它们也会产生大量其他不必要的警告。例如,我想授权//评论样式,或枚举器列表末尾的逗号,或(...)可变参数宏或long long类型。 有时可以关闭某些特定警告(-Wno-long-long-Wno-variadic-macros),有时我找不到任何(//评论样式)。

启用一组警告并禁用大部分警告只是为了保留相关警告,这听起来很愚蠢。但如果这是唯一的可能性,我就可以了。

1 个答案:

答案 0 :(得分:2)

-Wdeclaration-after-statement是您想要的gcc选项。从手册页:

  

在块中的语句后找到声明时发出警告。这个   从C ++开始,已经使用ISO C99引入了构造,并且是   GCC允许默认。 ISO C90不支持它,但没有   在GCC 3.0之前由GCC版本支持。