Constant value in Header-File definieren

OP Persönliche Seite #621175
Lesenswert?
• ▲
▼
Hallo!

Ich habe in einem Header-File eine globale Variable definiert um die 
Längen mehrerer Vektoren festzulegen. Allerdings verlangt der Compiler, 
dass 'length' einen konstanten Wert haben muss. Ich benutze globale 
Variable auch nur ungern, aber in diesem Fall muss es leider sein.

Fehlermeldung:
cc0028:  error: expression must have a constant value
extern fract16 coeff[length];
1
extern const   int length=5;
2
extern   fract16 coeff[length];

Ich bin nicht so der C-Kenner, aber mein Fehler erscheint mir nicht ganz 
so logisch, Euch ja vielleicht schon.

Ich bedanke mich bereits jetzt für Eure Hilfe.

Daniel
#621187
Lesenswert?
• ▲
▼
Daniel Pfefferkorn wrote:
> Fehlermeldung:
> cc0028:  error: expression must have a constant value
> extern fract16 coeff[length];
>
>
1
> extern const   int length=5;
2
> extern   fract16 coeff[length];
3
>
wenn Du ein Array anlegen willst, dann muss dessen Länge konstant UND 
zum Zeitpunkt des Compilierens bekannt sein! Da ändert auch die 
Deklaration mit "const" nichts dran. Der Ausdruck in der eckigen Klammer 
muss ein Zahlenwert sein. Und den Wert Deines "length" kennt der 
Compiler nicht...
OP Persönliche Seite #621195
Lesenswert?
• ▲
▼
Johannes M. wrote:
> Das einzige, was Du an der Stelle sinnvollerweise machen könntest, wäre
> eine Präprozessor-Anweisung (Makro)
>
1
> #define LENGTH 5
2
> //...
3
> extern fract16 coeff[LENGTH]
4
>

Funktioniert leider nicht, denn die Idee hatte ich auch schon.

Das Ergebnis:

"hall.h", line 44: cc0017:  error: expected a "]"
  extern fract16 coeff[length];
                       ^

"hall.h", line 44: cc0169:  error: expected a declaration
  extern fract16 coeff[length];
OP Persönliche Seite #621212
Lesenswert?
• ▲
▼
Hab es jetzt nochmal versucht und siehe da, es geht. Hab vorher wohl 
irgendeinen dummen Fehler gemacht.

Mit
1
#define LENGTH 5
2
extern   fract16 coeff[LENGTH];

geht es.


UUPS: Jetzt weiß ich auch, welchen Fehler ich gemacht habe.

Ich hatte vorher
1
#define LENGTH 5;
 geschrieben.

Und das Semikolon ... also nein, jetzt schäme ich mich.

Danke für Deine überaus schnelle Hilfe!

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.