Forum: Compiler & IDEs Array initialisieren mit Define-Konstante nicht erlaubt?


von X. H. (shadow0815)


Lesenswert?

Hi!
Darf man das wirklich nicht, oder warum krieg ich nen Fehler?

#define AAA 100;
.
.
.
uint8_t array[]={AAA, AAA, AAA, AAA};

compiler: Syntax error before ;

------------------

Hier Test-Prog:

#include <avr/io.h>

#define AAA 100;



int main (void) {

//uint8_t array[]={AAA, AAA, AAA, AAA};
uint8_t array[]={100, 100, 100, 100};  //Nur so klappt es, nicht mit dem 
Auskommentierten...


   while(1)
   {

     //Mach was...


   }


   return 0;
}

von T.v.B. (Gast)


Lesenswert?

Nimm das Semikolon hinter der 100 weg, dann sollte es klappen.

#define AAA 100

Gruß
T.v.B.

von Karl H. (kbuchegg)


Lesenswert?

Mach doch selbst mal die Textersetzung die das #define bewirkt:

Aus
1
define AAA 100;
2
uint8_t array[]={AAA, AAA, AAA, AAA};

wird
1
uint8_t array[]=[100;, 100;, 100;, 100;};

Siehst du jetzt den Fehler?


von X. H. (shadow0815)


Lesenswert?

Aaaahhh, ja, danke.
Hab es einfach nicht bemerkt, weil natürlich beim Error nicht aufs 
Define verwiesen wurde hab ich den Fehler auch explizit in dieser Zeile 
gesucht und nicht drann gedacht dass es ein Folgefehler sein kann der 
aus einem define/Makro entstand)

Das ; hatte ich aus Versehen gewohnheitsmäßig gemacht

-- Text geändert (hier sah der Syntax auch nicht so gut aus ;-) )

von Rahul, der Trollige (Gast)


Lesenswert?

*nachtret
>(weil natürlich beim Error nicht aufs Define verwiesen wurde
Warum auch?

>das ; aus Gewohnheit gemacht.
Sollte man in einer Zeile, die mit "#define" anfängt halt nicht 
machen...


von X. H. (shadow0815)


Lesenswert?

Rahul, der Trollige wrote:
> *nachtret
>>(weil natürlich beim Error nicht aufs Define verwiesen wurde
> Warum auch?
[...]

Ja, ist klar. Weil der Compiler ja den Text nach dem Präprozessor erst 
erhält und nur davon die Fehler ankreiden kann...

von Rahul, der Trollige (Gast)


Lesenswert?

>Ja, ist klar
>> *nachtret

von X. H. (shadow0815)


Lesenswert?

/me zieht sich n Vokalbelheft unter die Hose :P


/me => Kennt ihr ja von Mirc :P

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.