Präprozessordefinition und Schlüsselwort-Neudefinition in C
Im Bereich der C-Präprozessordirektiven ist eine hitzige Debatte über die Standardkonformität der Neudefinition entstanden Schlüsselwörter mit #define. Kann ein konformer Präprozessor eine solche Praxis zulassen?
Der Präprozessor und die Schlüsselwörter
Gemäß dem C-Standard verbietet §17.4.3.1.1/2 ausdrücklich die Neudefinition eines Schlüsselworts darin eine Übersetzungseinheit, die einen Standardbibliotheksheader enthält. Diese Einschränkung stellt die Integrität der Standardbibliothekskomponenten sicher.
C 0x und Schlüsselwort-Neudefinition
Anfangs wurde angenommen, dass C 0x (ein mittlerweile veraltetes Zwischenprodukt zu C 11 ) würde dieses Verbot verstärken, die Neudefinition von Schlüsselwörtern gänzlich zu verbieten (§17.6.3.3.1). Inzwischen wurde jedoch klargestellt, dass die Regeln in C 0x unverändert bleiben. Die wahrgenommene Überarbeitung entstand aus einer Textumordnung, die einige versehentlich in die Irre führte.
Standardkonformität und Neudefinition von Schlüsselwörtern
Angesichts der aktuellen Standards kann ein C-Programm, das ein Schlüsselwort neu definiert, nicht sein gelten als normkonform. Durch die Verletzung der Beschränkung der Neudefinition von Schlüsselwörtern verletzt ein solches Programm die Integrität der Sprache und ihrer integrierten Semantik.
Das obige ist der detaillierte Inhalt vonIst die Neudefinition von C-Schlüsselwörtern mit #define standardkonform?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!