【发布时间】:2015-04-28 03:12:59
【问题描述】:
我在“最令人烦恼的解析”中看到的所有讨论都在谈论如何强制编译器将 case 视为带有初始化程序的变量声明(而不是实际解释为函数声明)。例如,请参阅 this stackoverflow thread 和 this article from Ask-Coder。
我的团队有一条规则:将尽可能多的警告强制为错误。目标是防止杂乱无章地进入代码;成功的编译应该是无声的,禁用警告是灾难的根源。这一切都非常好,除了我被最令人烦恼的解析所咬伤,声明实际上解析了我希望它解析的方式。
具体来说:
int some_function();
如 Ask-Coder 文章中所示,此代码片段确实触发了 clang 中的 Most Vexing Parse 警告,然后我们将其转换为错误,这让我大吃一惊。
我可以在此处的语法中做些什么来使 (a) 成为合法的 C 声明(不仅仅是 C++)和 (b) 不会触发 Most Vexing Parse 警告?还是我必须跳#pragma dance 并在这行代码周围使警告静音?
【问题讨论】:
标签: c++ clang most-vexing-parse