Forum: Compiler & IDEs #if mit WinAVR GCC


von Be M. (bemi)


Lesenswert?

Hallo,

ich wollte so etwas wie
1
#if (F_CPU<8670000)
2
#define _ATTransferBit2   asm volatile ("nop");
3
#endif
machen, aber der Compiler meckert mich immer an?

Kennt GCC #if nicht?

Bernd

von Benedikt K. (benedikt)


Lesenswert?

Was sagt denn der Compiler ?

von Be M. (bemi)


Lesenswert?

Da habe ich glaube ich einen Fehler gemacht. Vielleicht sollte man so 
langsam mal Feierabend machen.
1
#define _ATTransferBit1(_byte, _bit)\
2
  ATDataPORT&=~(1<<ATDataBit);\
3
  if (_byte&(1<<_bit))\
4
    ATDataPORT|=(1<<ATDataBit);\
5
  ATClkPORT &= ~(1<<ATClkBit);\    <=== hier ist mein Fehler
6
#if (F_CPU<8670000)
7
#define _ATTransferBit2   asm volatile ("nop");
8
#else
9
#define _ATTransferBit2
10
#endif

Danke und Grüße, ich mache jetzt mal besser Schluss.

Bernd

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Klar, dadurch wurde die nachfolgende Zeile (mit dem #if) zur vorigen
hinzu gefügt.

Nur so, der Name _ATTransferBit2 ist im `implementation namespace',
den solltest du also besser nicht in der Applikation benutzen.  Compiler
und Systembibliothek dürfen diesen Namen beliebig für ihre eigenen
Zwecke benutzen.  Entweder lass den Unterstrich ganz weg, oder nimm
als erstes Zeichen nach dem Unterstrich einen Kleinbuchstaben.

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.