Heim > Backend-Entwicklung > C++ > Ist die Neudefinition von C-Schlüsselwörtern mit #define standardkonform?

Ist die Neudefinition von C-Schlüsselwörtern mit #define standardkonform?

Patricia Arquette
Freigeben: 2024-11-21 04:03:17
Original
830 Leute haben es durchsucht

Is Redefining C   Keywords with #define Standards Compliant?

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage