Frage:
In C/C , Was ist der angenommene Wert für undefinierte Konstanten, wenn sie in #if-Bedingungen des Präprozessors verwendet werden? Kann man sich auf diese Annahme verlassen oder könnten undefinierte Konstanten zu unvorhersehbarem Verhalten führen?
Antwort:
Gemäß dem C99-Standard wird tatsächlich davon ausgegangen, dass undefinierte Konstanten einen Wert haben von 0 für die Auswertung von #if-Bedingungen. Dies wird ausdrücklich in §6.10.1 ¶3 angegeben:
„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.“
Ähnlich heißt es im C-Standard (§16.1 ¶4):
„Nach allen Ersetzungen aufgrund der Makroerweiterung und der definierten Unärzahl.“ Wenn der Operator ausgeführt wurde, werden alle verbleibenden Bezeichner und Schlüsselwörter, außer true und false, durch die pp-Nummer 0 ersetzt. wenn Bedingungen.
Das obige ist der detaillierte Inhalt vonUndefinierte Konstanten im Präprozessor #if-Bedingungen: Definierte oder undefinierte Ergebnisse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!