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...
Man fragt da so: #define Mirror 1 //alternativ #define Mirror 0 und dann: #if mirror ... #else ... #endif
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.
@Benedikt: "ANSI Standart" Wie kann man denn nach ANSI-Art stehen? SCNR
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.
@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).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.