【发布时间】:2017-05-29 02:30:45
【问题描述】:
我知道-ansi -pedantic-errors
在我的代码中是否还有其他选项可以尽可能地进行防御?我的意思是我不想错过任何警告或任何东西。
【问题讨论】:
-
你坚持使用 C89 是在困扰哪个版本的 GCC?
-Wall -Wextra -Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition -Werror可能是一个很好的起点(但某些版本的 GCC 可能不喜欢-Wold-style-definition,或者可能是其他选项)。但是你为什么要把你的代码拖到过时的标准上呢?它已经过了退休年龄——今年是 28 岁。 -
gcc docs 可能也有帮助
-
@JonathanLeffler:我们在之前的海报问题中遇到了这个问题。他坚持使用过时的 C 语言版本。
-
@M.M:但这引出了一个问题“实际遵循了多少标准”。如果答案是“不知道”,那么
-std=c90 -pedantic可能就是您想去的地方。如果您知道代码是按照一组更严格的规则编写的,那么您可以添加额外的选项。但是“尽可能防御”意味着他们对严格和愿意随时修改代码很感兴趣,在这种情况下,我的建议是正确的。很难给出更好的答案。看来这不是这个 OP 对这个问题的第一次攻击。看来他不一定在学习。 -
@JonathanLeffler 尽管 C89 已经过时,但它仍然是一个定义明确的标准。符合它的用途是与旧的或外来的编译器兼容。例如。您可以确定
msvc正确编译 C89 代码。我想说暗示用途非常有限并且 OP 最好只使用 C11 是很好的,但可能有理由不这样做。