【发布时间】:2015-08-06 22:57:50
【问题描述】:
我的问题 (Single line comment continuation) 让我想知道编译器的合规性和警告消息,尤其是许多编译器中的警告即错误功能。
根据 C++ 规范,第 1.4.2.1 节指出:
如果程序不违反本国际标准中的规则,则符合要求的实现应在其资源限制内接受并正确执行该程序。
如果针对技术上符合标准的代码发出警告消息(如在我的链接问题中),即使我特别要求发出警告(再次,在我的示例中,如果我使用 -Wcomments 和 gcc ),并且我使用警告错误(-Werror),程序将无法编译。我意识到这是相当迟钝的,因为我可以通过多种方式解决这个问题。但是,鉴于引用,这是否违反了通常允许的标准,还是以某种方式明确允许的?
【问题讨论】:
-
如果有帮助,您可以将
gcc -Werror视为不符合标准的实现。将其视为只是一个开发和样式助手(如 Clippy),它可以帮助您创建一个外观漂亮的程序,您可以(或可以)将其提供给符合要求的实现。 -
是否有任何文档和/或迹象表明您正在使用 gcc 或其他编译器在非合规模式下进行编译?
-
@MuertoExcobito:GCC 的诊断肯定会区分“真实”错误和被视为错误的警告。当然,您可以知道警告被视为错误,因为您指定了
-Werror。我没有使用足够的其他编译器来评论它们。
标签: c++ language-lawyer