#if #else #endif verursacht Fehlermeldung

Gast #179376
Lesenswert?

Ich habe (wieder mal) Probleme mit dem NC30 Compiler von Renesas:
In einem Gerät werden 2 verschiedene LCDs verbaut, mit dem Unterschied
dass bei einem das Bild gespiegelt wird. Das möchte ich gerne mit
#define Mirror 0 (bzw. 1)
lösen.

Leider hat der Compiler aber was dagegen:

void Rotate (char Wert)
    {if (Wert==0)
        {#if Mirror==1
            SendCom(161);     //H-Mirror ON   Normal
         #else
            SendCom(160);     //H-Mirror OFF
         #endif
         SendCom (196);        //V-Mirror OFF
        }
     else
        {#if (Mirror==1)
            SendCom(160);     //H-Mirror OFF  180° gedreht
         #else
            SendCom(161);     //H-Mirror ON
         #endif

         SendCom (197);     //V-Mirror ON
        }}

Beim Compilen kommt immer dieser Fehler:
[Error(cpp30.53):S1D15712.c, line 309] elif/else sequence error
[Error(cpp30.55):S1D15712.c, line 311] endif sequence error
[Error(cpp30.53):S1D15712.c, line 317] elif/else sequence error
[Error(cpp30.55):S1D15712.c, line 319] endif sequence error

Bin ich zu blöd, oder ist der Compiler einfach scheiße ? Das es nicht
ganz den ANSI Standart erfüllt habe ich auf jedenfall schon gemerkt...
Gast #179378
Lesenswert?

nö, das problem an den beiden zeilen ist die führende geschweifte
klammer.

{#if Mirror==1
{#if (Mirror==1)

ändere das so, dass die #if anweisungen auf einer separaten zeile
stehen.


> Beim Compilen kommt immer dieser Fehler:

diese fehler kommen nicht vom compiler, sondern vom präprozessor. der
erkennt präprozessoranweisungen nur, wenn vor dem # nur whitespaces
stehen. alles andere wird nicht beachtet, deshalb erhältst du auch
keine fehlermeldung bei den #if zeilen.
Gast #179381
Lesenswert?

Btw., das Doppelkreuz muss nach Standard in der ersten Spalte stehen,
danach (vor dem define usw.) dürfen Leerzeichen folgen.  GCC's
Präprozessor akzeptiert die Anweisungen zwar auch mit führenden
Leerzeichen, aber das ist nicht vom Standard garantiert.
Gast #179382
Lesenswert?

@Jörg: Deine kleine Info am Ende ist das Salz in der Suppe dieses
Forums. Nicht wirklich momentan wichtig, aber für's tiefere
Verständnis, bzw. potentielle zukünftige Probleme seehr brauchbar.
Danke.

----, (QuadDash).

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