最令人烦恼的解析:C 语法之谜
在迷宫般的 C 语法世界中,有一个神秘的难题脱颖而出:令人烦恼的解析(MVP)。这种语法上的特殊性给程序员带来了挑战,让很多人感到困惑。
MVP 的症结在于对某种语法的模糊解释:
A a( A() );
这行令人困惑的代码可以解释为两种相互冲突的方式:
令人惊讶的是,尽管程序员普遍期望第一种解释是正确的,但 C 标准强制要求第二种解释。这让许多人摸不着头脑,想知道为什么会做出这样一个意想不到且可能令人困惑的选择。
为了理解 MVP 背后的基本原理,让我们考虑一个它不存在的假设场景。在这种替代现实中,如何在 C 中声明函数?
A foo();
不幸的是,使用此语法会导致变量定义而不是方法声明。为了适应函数声明,需要一个新的关键字或尴尬的语法。
为了避免这种复杂性,C 标准选择了一个更简单的规则:“所有可以被解释为声明的东西都将被解释为宣言。”这包括变量定义和函数声明。因此,语法
A a;
定义一个变量,而
A a();
声明一个函数。
采用此规则可确保语法的一致性,从而无需特殊情况。虽然这最初可能会让程序员感到迷惑,但它最终会促进语言的清晰度和一致性。
以上是C 最令人烦恼的解析是什么?为什么它将 `A a(A());` 解释为函数声明?的详细内容。更多信息请关注PHP中文网其他相关文章!