应该设置哪些 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
但不太明确或灵活。
缺少的原型会警告您有关在范围内没有原型的情况下使用的函数(或定义的外部函数)的信息。严格的原型意味着您不能在函数声明或定义(或函数指针)中使用“空括号”;你要么需要(void)
或正确的参数列表。旧样式定义包含 K&R 样式函数定义,例如:
int old_style(a, b) int a; double b; { ... }
如果你幸运的话,你就不需要担心这个问题。我在工作中就没那么幸运了,而且我不能使用严格的原型,这让我很懊恼,因为周围有太多草率的函数指针。
也可以看看:清理代码的最佳命令行工具是什么 https://stackoverflow.com/questions/393208/what-is-the-best-command-line-tool-to-clean-up-code/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)