"混合声明和代码"警告,是否值得解决?

Gra*_*oob 9 c compiler-warnings

我最近-pedantic在gcc上启用了选项,现在我有大约两到三页的"ISO C90禁止混合声明和代码"警告.

我在这个项目中的目标是能够在任何带有交流编译器的主流系统上部署它,所以我意识到假设C99在任何地方都得到支持是不明智的,但是它是否值得花时间来解决这些警告?

是否还有那些不支持混合声明和代码的c编译器系统?

AnT*_*AnT 7

那么,您是否打算在C89/90或C99中编写代码?

由于这是您似乎唯一关注的警告,显然您的代码实际上是用C89/90编写的.如果确实如此并且你打算坚持使用C89/90,那么我会坚持使用严格的C89/90并将所有声明移到块的开头.

另一方面,如果您愿意并计划切换到C99,那么"错位"声明不再是问题.然后您的主要关注点成为平台/编译器支持.MS Visual Studio C编译器是C89/90编译器.这是一个问题吗?(考虑到GCC在Windows平台上可用).

  • 在这种情况下答案是:不,它不会在任何mainsream C编译器上编译.MS VIsual Studio编译器遵循C89/90并且它不会编译此类代码. (3认同)

mli*_*bby 5

如果您想-pedantic了解C99标准,请添加选项-std=c99.

我个人喜欢旧的非混合风格,因为它可以更容易地直观地审核函数使用的内存类型,并决定在返回之前可能需要free() - ing.