Forum: Mikrocontroller und Digitale Elektronik [F] Array/Structure Initialisierung und C Präprozessor


von Bertram (Gast)


Lesenswert?

Verwende ich isA und isB in der Initialisierung (siehe unten) erhalte 
ich eine Fehlermeldung. Ersetze ich die beiden "defines" durch ihre 
Zahlen, dann wird das Programm compiliert.

Warum kann ich an dieser Stelle keine "defines" verwenden? Dachte bis 
jetzt der Präprozessor würde sich um die Ersetzung kümmern.
1
#define isA 1;
2
#define isB 7;
3
#define isC 47;
4
5
struct stConfig
6
{
7
  int baud;     
8
  int clock;    
9
  int SPI1;    
10
  int SPI2;    
11
  int CD;      
12
  int Value;    
13
};
14
15
struct stConfig Config[2] =
16
{
17
   {300,    16, 2,   1, 288, isA},
18
   {600,    16, 2,   1, 144, isC}
19
};


configfile.c(69): error:  #67: expected a "}"
configfile.c(69): error:  #67: expected a "}"
configfile.c(69): error:  #169: expected a declaration

von Quack (Gast)


Lesenswert?

Ersetze es mal von Hand:

struct stConfig Config[2] =
{
   {300,    16, 2,   1, 288, 1;},
   {600,    16, 2,   1, 144, 47;}
};

Wuerde ich auch nicht kompilieren wollen.

von Peter II (Gast)


Lesenswert?

nach dem ersetzen steht dann:

{300,    16, 2,   1, 288, 1;},
{600,    16, 2,   1, 144, 47;}

nach fällt dir was auf?

von Bertram (Gast)


Lesenswert?

Asche auf mein Haupt. Danke :)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Und wer immer noch rumrätselt: ein define endet nicht vor oder mit 
einem Strichpunkt, sondern erst am Zeilenende.
Und deshalb sollte man hinter ein define auch keinen Kommentar mit // 
schreiben. Da gabs abhängig vom Compiler auch schon mal Probleme...

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.