Gast
#3273019
Tach, wenn ich folgendes stehen habe: #if HARDWARE < 2 HARDWARE aber nicht definiert wurde, - wird dann HARDWARE als 0 angenommen - oder ist der Ausdruck dann immer "false" - oder ganz ander?
|
Anzeige
|
Anfängerfrage zur bedingten Compilierung
Gast
#3273019
Tach, wenn ich folgendes stehen habe: #if HARDWARE < 2 HARDWARE aber nicht definiert wurde, - wird dann HARDWARE als 0 angenommen - oder ist der Ausdruck dann immer "false" - oder ganz ander? Ich nehme an, dass der Präprozessor einen Fehler erzeugen wird (hab's nicht getestet). Prüf doch vorher mit #ifdef, ob HARDWARE definiert wurde. MHz schrieb: > Tach, wenn ich folgendes stehen habe: > > #if HARDWARE < 2 > > HARDWARE aber nicht definiert wurde, > > - wird dann HARDWARE als 0 angenommen > - oder ist der Ausdruck dann immer "false" > - oder ganz ander? "HARDWARE" ist nicht vorhanden und damit "false". Da "false" = 0 ist und 0 < 2, ist die Bedingung true. #if HARDWARE < 2 // Wird hier ausgeführt #else #endif mfg. MHz schrieb: > - wird dann HARDWARE als 0 angenommen Genau dieses. Hier das entsprechende Zitat aus dem C-Standard: “… After all replacements due to macro expansion and the defined unary operator have been performed, all remaining identifiers (including those lexically identical to keywords) are replaced with the pp-number 0, and then each preprocessing token is converted into a token. The resulting tokens compose the controlling constant expression which is evaluated according to the rules of 6.6. …” GCC würde bei -Wundef übrigens eine Warnung darüber ausspucken. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|