当遇到不明确的语法时,
A a( A() );
有趣的问题出现了:为什么C标准优先解释这个作为变量定义的函数声明?这种与普遍期望的差异引发了关于该标准的立场是否应该与广泛的程序员直觉保持一致的争论。
为了理解这个选择,让我们深入研究被称为“最令人烦恼的解析”(MVP)的概念。考虑声明函数的简单任务:
A foo();
在没有 MVP 的情况下,此代码将被解释为定义一个名为“foo”的变量。引入新的关键字或采用更复杂的函数声明语法会使语言变得过于复杂。相反,MVP 确保相似语法结构之间的一致性。
在此示例中,明确的声明
A foo;
定义了一个变量,而
A foo();
声明了一个函数。通过将此逻辑扩展到稍微复杂的 MVP 情况,我们保持了一致性。它将规则简化为简单的“将任何可能类似于声明的内容解释为声明”。这种方法减少了对复杂异常或限定符的需求。
虽然这种解释可能无法完全阐明 MVP 背后的历史动机,但它强调了它的实际好处 - 语言语法的一致性和简单性。这种推理是否符合常见的编程直觉仍然是 C 社区中持续争论的问题。
以上是为什么 C 在不明确的语法中优先考虑函数声明而不是变量定义?的详细内容。更多信息请关注PHP中文网其他相关文章!