我应该使用哪些gcc选项来强制执行ANSI C(C99)警告/错误?gcc(GCC)3.4.2(mingw-special)
我正在使用:gcc -pedantic -ansi -std = c99这是正确的吗?
该-ansi
旗帜与-std=c89
旗帜同义.
只需使用-std=c99
与-pedantic
应该足够了.
如有疑问,您可以随时参考GCC文档.从GCC 3.4.2开始,要阅读的章节是2 - GCC支持的语言标准.
这是一个老问题,但我只是想补充一些额外的分数.
首先,无论您向GCC提供的通用命令行开关集合如何,目前似乎不可能使GCC将所有约束违规报告为"错误",而将其他所有约束违规报告为"警告".从C语言的角度来看,GCC报告为"警告"的一些诊断消息实际上是约束违规(即"错误"),但是没有办法强制GCC识别该事实并生成"错误"诊断.很可能通过微调单个警告类型可以实现更精确的分离,但我不确定GCC设置是否提供足够的粒度来实现良好匹配.
其次,GCC提供-pedantic-errors
可用于代替plain的选项-pedantic
,其旨在使诊断消息的更精确(如上所述)分类成"错误"和"警告".但它仍然不完美.
PS语言规范不要求/定义将诊断消息分离为"错误"和"警告",但实际上许多程序员期望约束违规被报告为"错误".当你在提问中提到"强制执行警告/错误"时,我认为你可能会有类似的意思.