<分区>
应该设置哪些 GCC 选项以使 GCC 尽可能严格? (我的意思是尽可能严格)我正在用 C89 编写代码并希望我的代码符合 ANSI/ISO。
<分区>
应该设置哪些 GCC 选项以使 GCC 尽可能严格? (我的意思是尽可能严格)我正在用 C89 编写代码并希望我的代码符合 ANSI/ISO。
最佳答案
我建议使用:
-Wall -Wextra -std=c89 -pedantic -Wmissing-prototypes -Wstrict-prototypes \
-Wold-style-definition
你应该用 -O
和 -g
编译,因为有些警告只有在使用优化器时才会出现(实际上,我通常使用 -O3
用于发现问题)。您可能更喜欢 -std=gnu89
,因为它会在库中禁用较少的扩展。 OTOH,如果您编码为严格的 ANSI C89,也许您希望禁用它们。 -ansi
选项等同于 -std=c89
但不那么明确或灵活。
缺少原型(prototype)会警告您在范围内没有原型(prototype)的情况下使用的函数(或定义的外部函数)。严格的原型(prototype)意味着你不能对函数声明或定义(或函数指针)使用“空括号”;您需要 (void)
或正确的参数列表。旧风格定义点了 K&R 风格的函数定义,例如:
int old_style(a, b) int a; double b; { ... }
如果你幸运的话,你就不用担心了。我在工作中就没那么幸运了,我不能使用严格的原型(prototype),这让我很懊恼,因为周围有太多草率的函数指针。
关于c - 最严格的 C 代码的 GCC 选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8946797/