Forum: Compiler & IDEs Constanten und array


von Michael (Gast)


Lesenswert?

Hallo,

ich habe eine kleines Sytaxproblem und stehe scheinbar auf dem Schlauch.
Ich hab mir eine reihe von Konstanten definitert die ich in einen array
reinhauen will (siehe unten). Aber wenn ich das mache bekomme ich eine 
fehlermeldung
die da lautet:
../moveLib.c:65: error: initializer element is not constant
../moveLib.c:65: error: (near initialization for 'forwoard[0][0]')

und das für jedes Element meines arrays. Hat jemand eine Idee?
Schonmal vielen Dank :-)



        const u08 HIPP_1_FRONT=120;
  const u08 HIPP_1_MIDDEL=128;
  const u08 HIPP_1_BACK=140;
  const u08 KNEE_1_UP = 120;
  const u08 KNEE_1_DOWN = 140;

  const u08 HIPP_2_FRONT=120;
  const u08 HIPP_2_MIDDEL=128;
  const u08 HIPP_2_BACK=140;
  const u08 KNEE_2_UP = 120;
  const u08 KNEE_2_DOWN = 140;

  const u08 HIPP_3_FRONT=120;
  const u08 HIPP_3_MIDDEL=128;
  const u08 HIPP_3_BACK=140;
  const u08 KNEE_3_UP = 120;
  const u08 KNEE_3_DOWN = 140;

  const u08 HIPP_4_FRONT=120;
  const u08 HIPP_4_MIDDEL=128;
  const u08 HIPP_4_BACK=140;
  const u08 KNEE_4_UP = 120;
  const u08 KNEE_4_DOWN = 140;

  const u08 HIPP_5_FRONT=120;
  const u08 HIPP_5_MIDDEL=128;
  const u08 HIPP_5_BACK=140;
  const u08 KNEE_5_UP = 120;
  const u08 KNEE_5_DOWN = 140;

  const u08 HIPP_6_FRONT=120;
  const u08 HIPP_6_MIDDEL=128;
  const u08 HIPP_6_BACK=140;
  const u08 KNEE_6_UP = 120;
  const u08 KNEE_6_DOWN = 140;

  const u08 FOOTUP=1;
  const u08 FOOTDOWN=0;








   const u08 forwoard[18][18] ={{KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, 
HIPP_2_FRONT, KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, 
KNEE_5_DOWN, HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                    {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, 
HIPP_2_FRONT, KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, 
KNEE_5_DOWN, HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                    {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, 
HIPP_2_FRONT, KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, 
KNEE_5_DOWN, HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                 {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                   {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN},
                  {KNEE_1_DOWN, HIPP_1_BACK, KNEE_2_DOWN, HIPP_2_FRONT, 
KNEE_3_DOWN, HIPP_3_FRONT, KNEE_4_DOWN, HIPP_4_MIDDEL, KNEE_5_DOWN, 
HIPP_5_MIDDEL, KNEE_6_DOWN, 
HIPP_6_BACK,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN,FOOTDOWN}};

von Johannes M. (johnny-m)


Lesenswert?

Für die Initialisierung der Array-Elemente interessiert es den Compiler 
nicht, dass vor den einzelnen Bezeichnern ein "const" steht. Für den 
sind das Variablennamen wie jeder andere auch, und die kann man in einer 
globalen Initialisierung nicht zuweisen.

Das ganze macht sowieso wenig Sinn, da man solche Sachen dem 
Präprozessor überlässt. Das, was Du da versuchst, würde, wenn es 
funktionieren würde, für jedes Element zweimal den Speicher belegen. 
Wenn Du nur für Deine Zahlen sinnvolle Namen vergeben willst, dann mach 
es mit #define. Dadurch wird wenigstens nicht für die Einzelwerte noch 
extra Speicher belegt. Außerdem gibts dann keine Fehlermeldung mehr.

von Rolf Magnus (Gast)


Lesenswert?

> Aber wenn ich das mache bekomme ich eine fehlermeldung
> die da lautet:
> ../moveLib.c:65: error: initializer element is not constant
> ../moveLib.c:65: error: (near initialization for 'forwoard[0][0]')
>
> und das für jedes Element meines arrays. Hat jemand eine Idee?

Ja. Es sind keine Konstanten. Eine Variable, die const ist, ist keine 
Konstante. In C++ wäre das anders.

von Michael (Gast)


Lesenswert?

Hi,

danke für die Tipps.
Ich werd define benutzen :-)

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.