我应该使用哪些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语言规范不要求/定义将诊断消息分离为“错误”和“警告”,但实际上许多程序员期望约束违规被报告为“错误”。 当你在提问中提到“强制执行警告/错误”时,我认为你的意思可能就是这样。
-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
应该做你想要的。
需要了解更多c/c++开发分享GCC选项强制执行Ansi C标准检查?,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!
以上就是c/c++开发分享GCC选项强制执行Ansi C标准检查?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/979097.html