Schlüsselwörter in der C-Vorverarbeitung neu definieren: Einhaltung von Standards
Die Verwendung von #define zur Neudefinition von Sprachschlüsselwörtern hat in der Entwicklergemeinschaft eine Debatte ausgelöst. Dieser Artikel befasst sich mit den Standards für diese Praxis.
Standardkonformität mit neu definierten Schlüsselwörtern
Gemäß dem C-Standard (§17.4.3.1.1/2), a Der standardkonforme C-Präprozessor kann Schlüsselwörter nicht neu definieren, wenn eine Übersetzungseinheit einen Standardbibliotheksheader enthält. Diese Einschränkung wird für Übersetzungseinheiten ohne Standardkopfzeilen aufgehoben.
In C 0x schien der zweite Satz des oben genannten Absatzes die Neudefinition von Schlüsselwörtern insgesamt zu verbieten, was zu Verwirrung führte. Ken Bloom stellte jedoch klar, dass sich die Regeln in C 0x nicht geändert haben. Der Text wurde lediglich in einer Weise neu angeordnet, die zu Missverständnissen führen kann.
Konsequenzen bei Nichtkonformität
Wenn ein C-Programm ein Sprachschlüsselwort neu definiert, ist dies nicht von Natur aus der Fall nicht konform werden. Es kann jedoch nicht garantiert werden, dass es auf verschiedene Compiler oder Plattformen portierbar ist. Darüber hinaus kann ein solches Programm auf unerwartetes Verhalten oder Fehler stoßen, wenn es versucht, mit Standardbibliotheksheadern zu interagieren, die die ursprüngliche Schlüsselwortdefinition erwarten.
Das obige ist der detaillierte Inhalt vonKönnen C-Präprozessoren Schlüsselwörter neu definieren und dennoch standardkonform sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!