我在“最烦人的解析”中看到的所有讨论都是关于如何强制编译器将 case 视为带有初始化程序的变量声明(而不是将实际解释视为函数声明)。参见,例如,this stackoverflow thread和 this article from Ask-Coder .
我的团队有一个规则:将尽可能多的警告强制为错误。目标是防止 cruft 进入代码;成功的编译应该是无声的,禁用警告是灾难的根源。这一切都很好,除了我被 Most Vexing Parse 咬伤了一个声明,该声明实际上解析了我希望它解析的方式。
具体来说:
int some_function();
如 Ask-Coder 文章中所示,此代码片段确实触发了 clang 中的 Most Vexing Parse 警告,然后我们将其转换为错误,这让我大吃一惊。
我可以在此处的语法中做些什么来使它 (a) 成为合法的 C 声明(不仅仅是 C++)并且 (b) 不会触发 Most Vexing Parse 警告?或者我是否必须在这行代码周围进行 #pragma 舞蹈并使警告静音?
最佳答案
能不能这么简单
int some_function(void);
关于c++ - 将最令人烦恼的解析强制消歧为函数声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28730661/