题
我应该使用哪些 gcc 选项来强制执行 ANSI C (C99) 警告/错误?gcc (GCC) 3.4.2(mingw-特殊)
我在用着:gcc -pedantic -ansi -Std = C99这是正确的吗?
解决方案
这 -ansi
标志是同义词 -std=c89
旗帜。
只是使用 -std=c99
和 -pedantic
应该足够了。
当有疑问时,您可以随时 参考GCC文档. 。从 GCC 3.4.2 开始,要阅读的章节是 2 - GCC 支持的语言标准.
其他提示
这是一个老问题,但我只是想补充一些额外的观点。
首先,无论您向 GCC 提供一组通用命令行开关,目前似乎都不可能使 GCC 报告所有 违反约束 作为“错误”,其他所有内容作为“警告”。GCC 报告为“警告”的一些诊断消息实际上是 违反约束 (IE。从 C 语言的角度来看,这是“错误”),但没有办法强制 GCC 认识到这一事实并生成“错误”诊断。很可能通过微调各个警告类型可以实现更精确的分离,但我不确定 GCC 设置是否提供足够的粒度来实现良好的匹配。
其次,GCC提供 -pedantic-errors
可以用来代替普通的选项 -pedantic
, ,其目的是能够更精确地(如上所述)将诊断消息分类为“错误”和“警告”。但它仍然不完美。
附:语言规范不要求/定义将诊断消息分为“错误”和“警告”,但实际上许多程序员希望将约束违规报告为“错误”。我认为当您在问题中提到“强制执行警告/错误”时,您的意思可能是类似的。
-ansi
In C mode, this is equivalent to -std=c89. In C++ mode, it is equivalent to -std=c++98.
ANSI C 与 C99 还不一样。还, -Wall
可能也会感兴趣,但仅 -pedantic
应该做你想做的事。
不隶属于 StackOverflow