最も厄介な解析の異常を理解する
C では、物議を醸している最も厄介な解析 (MVP) ルールにより、特定の構文のあいまいさが常に大多数のプログラマーがそうではないことを期待しているにもかかわらず、関数宣言として解釈されます。この異常は次の構文から発生します:
A a( A() );
曖昧性の解決
このコードは 2 つの方法で解析できます:
MVP ルールに従って、コードはほとんどのプログラマは最初のオプションを期待していますが、これは 2 番目のオプションとして解釈する必要があります。
理由標準
MVP ルールは、C セマンティクスの一貫性を維持するために導入されました。これがないと、同じ構文がコンテキストに応じて変数定義または関数宣言として解釈される可能性があります。これにより、あいまいさが生じ、コードの可読性が低下します。
次の例を考えてみましょう。
A foo;
この行は明らかに変数定義です。ただし、MVP が存在しない場合、次の行はあいまいになります:
A foo();
これは、括弧が空の変数定義または関数宣言のいずれかとして解釈される可能性があります。 MVP ルールを強制することにより、このあいまいさは排除されます。
結論
MVP ルールは、あいまいなコードを常に関数宣言として解釈することにより、C 構文の一貫性を強制します。この選択は一部のプログラマーにとって直観に反しているように思えるかもしれませんが、明確で明確な解析メカニズムを提供し、エラーの可能性を減らし、コードの可読性を向上させます。
以上がC の最も厄介な解析では、なぜ常に `A a(A());` が関数宣言として解釈されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。