Anfängerfrage zur bedingten Compilierung

#3273054
Lesenswert?

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.
Moderator Persönliche Seite #3273055
Lesenswert?

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 schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren