Heim >Backend-Entwicklung >C++ >Können C-Präprozessoren Schlüsselwörter neu definieren und dennoch standardkonform sein?

Können C-Präprozessoren Schlüsselwörter neu definieren und dennoch standardkonform sein?

Barbara Streisand
Barbara StreisandOriginal
2024-12-11 11:40:12370Durchsuche

Can C   Preprocessors Redefine Keywords and Still Be Standards Compliant?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn