Die Most Vexing Parse-Regel verstehen
The Most Vexing Parse (MVP) ist eine Regel in C, die beim Parsen häufig zu unerwartetem Verhalten führt . Betrachten Sie das folgende Code-Snippet:
A a( A() );
Dieses Snippet kann auf zwei Arten interpretiert werden:
Gemäß dem C-Standard wird dieser Code als letzterer interpretiert. Aber warum ist das so?
Begründung hinter dem Standard
Wenn MVP nicht existierte, wäre die Deklaration einer Funktion mehrdeutig, da der folgende Code als interpretiert würde eine Variablendefinition, keine Methodendeklaration:
A foo();
Um diese Mehrdeutigkeit zu vermeiden, verlangt MVP, dass alles, was als interpretiert werden kann Eine Erklärung wird als Erklärung interpretiert. Mit anderen Worten: Jeder Code, der als Variablendefinition, Funktionsdeklaration oder Klassendefinition interpretiert werden kann, wird als solcher interpretiert.
Diese Konsistenz vereinfacht den Parsing-Prozess und erleichtert Compilern das Erkennen der beabsichtigten Bedeutung von Code. Es steht auch im Einklang mit dem allgemeinen Prinzip von C, dass „jeder Ausdruck entweder eine Deklaration oder ein Ausdruck ist“.
Schlussfolgerung
Während MVP gelegentlich zu unerwarteten Parsing-Ergebnissen führen kann , sorgt es für Konsistenz und Klarheit der C-Syntax. Indem sichergestellt wird, dass der gesamte Code, der als Deklaration interpretiert werden kann, auch als solcher interpretiert wird, trägt MVP dazu bei, Mehrdeutigkeiten zu vermeiden und vereinfacht den Parsing-Prozess für Compiler.
Das obige ist der detaillierte Inhalt vonWarum interpretiert Cs ärgerlichster Parse „A a(A());' als Funktionsdeklaration?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!