Forum: Mikrocontroller und Digitale Elektronik mit #ifdef auf konkreten Wert prüfen


von Alex (Gast)


Lesenswert?

Hallo,

ich habe eine Frage zur Präprozessoranweisung #ifdef. Ich mochte einen 
Teil des quellcodes nur kompilieren, wenn ein define einen bestimmten 
wert hat oder nicht hat

z.B

#ifdef BUFLENGTH != 256

Quellcode;

#endif

Wenn ich es so schreibe bekomme ich allerdings Warnungen

../my_uart_xx4.c:127:18: warning: extra tokens at end of #ifdef 
directive

ist das so, wie ich mir das vorstelle, überhaupt möglich?

Gruß, ALex

von A. F. (artur-f) Benutzerseite


Lesenswert?

probier mal #ifdef BUFLENGTH && (BUFLENGT != 256)

von Alex (Gast)


Lesenswert?

dann bekomme ich diese Warnung:

../my_uart_xx4.c:127:18: warning: extra tokens at end of #ifdef 
directive

noch was am Rande: ich arbeite mit AVR Studio

Alex

von Johannes M. (johnny-m)


Lesenswert?

Warum #ifdef? In dem Fall müsste ein einfaches #if her! #ifdef überprüft 
lediglich, ob ein Ausdruck definiert ist.

Syntaktisch korrekt wäre entweder
1
#ifdef BUFLENGTH
2
//...
3
#endif
Das würde aber nicht das machen, was Du vermutlich willst, sondern eben 
nur überprüfen, ob BUFLENGTH bereits definiert ist oder nicht. #ifdef 
ist nur eine Abkürzung für #if defined. Wenn Du eine Bedingung 
überprüfen willst, dann
1
#if BUFLENGTH != 256
2
//...
3
#endif

Und ob Du mit AVRStudio arbeitest oder nicht, spielt dabei keine Rolle.

von Alex (Gast)


Lesenswert?

recht hast Du.

Danke sehr

Gruß, Alex

von A. F. (artur-f) Benutzerseite


Lesenswert?

Er will ja schauen, ob der Ausdruck definiert ist. So sollte es aber 
klappen:

#ifdef BUFLENGTH
 #if BUFLENGT != 256
  // code
 #endif
#endif

von Alex (Gast)


Lesenswert?

@ A***** F*****

nein, ich wollte schauen, ob er als ein bestimmter Wert definiert ist. 
Definiert ist er immer. War vielleicht etwas unkonkret formuliert.

Gruß, Alex

von Johannes M. (johnny-m)


Lesenswert?

A***** F***** wrote:
> Er will ja schauen, ob der Ausdruck definiert ist. So sollte es aber
> klappen:
Woher willst Du das wissen? Aus seinem Posting geht eher das Gegenteil 
hervor! Zitat:
> Ich mochte einen Teil des quellcodes nur kompilieren, wenn ein define
> einen bestimmten wert hat oder nicht hat

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
Noch kein Account? Hier anmelden.