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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.