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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.