Heim  >  Artikel  >  Backend-Entwicklung  >  Werden undefinierte Konstanten in C- und C-„#if'-Makros als 0 ausgewertet?

Werden undefinierte Konstanten in C- und C-„#if'-Makros als 0 ausgewertet?

Susan Sarandon
Susan SarandonOriginal
2024-11-10 16:29:02685Durchsuche

Are Undefined Constants Evaluated as 0 in C and C   `#if` Macros?

Wird eine undefinierte Konstante in C- und C-#if-Makros als 0 ausgewertet?

Eine häufige Annahme ist, dass Präprozessoren undefinierte Konstanten als 0 interpretieren, wenn sie in #if-Bedingungen verwendet werden . Aber kann man sich darauf konsequent verlassen, oder führt es zu unvorhersehbaren Ergebnissen?

Die Antwort liegt in den Standards C99 und C 17.

C99-Standard

Der C99-Standard legt in §6.10.1 ¶3 Folgendes fest:

„Nachdem alle Ersetzungen aufgrund der Makroerweiterung und des definierten unären Operators durchgeführt wurden, werden alle verbleibenden Bezeichner durch die PP-Nummer 0 ersetzt.“ „

C 17-Standard

Ähnlich heißt es im C 17-Standard in §16.1 ¶4:

„Nach allen Ersetzungen aufgrund von Makroerweiterungen und.“ Nachdem der definierte unäre Operator ausgeführt wurde, werden alle verbleibenden Bezeichner und Schlüsselwörter, außer wahr und falsch, durch die pp-Zahl 0 ersetzt , ist es sowohl in C als auch in C tatsächlich zuverlässig anzunehmen, dass undefinierte Konstanten in #if-Bedingungen als 0 ausgewertet werden. Dieses Verhalten ist in den Sprachstandards explizit definiert und gewährleistet eine konsistente Ausführung über verschiedene Compiler und Plattformen hinweg.

Das obige ist der detaillierte Inhalt vonWerden undefinierte Konstanten in C- und C-„#if'-Makros als 0 ausgewertet?. 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