我应该使用哪些 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 应该做你想做的事。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top