XC8-const nicht konstant?

Gast #3826890
Lesenswert?
• ▲
▼
Hallo,
ich steige gerade in die Programmierung eines PIC18 mit dem XC8-Compiler 
ein.

Ich möchte eine Stringvariable mit 10 byte definieren;
1
    
2
const unsigned int size=10;
3
char text[size];

Leider scheint der Compiler das nicht zu mögen:

main.c:20: error: element count must be constant expression

Wieso das? ich habe doch size explizit als konstant definiert. Muss ich 
doch wieder mit #define arbeiten? Mit dem Microsoft Compiler wird obiger 
Ausdruck problemlos akzeptiert.

Gruß

Mike
#3826907
Lesenswert?
• ▲
▼
ist C++ aber nicht C. Innerhalb einer Funktion 1) mag das in C so 
aussehen als ob es funktionieren würde, wäre aber ein 
Variable-Length-Array.
Edit: Also entweder mit Defines arbeiten oder mit enums...

1)
[c]
void test() {
   const int i = 10;
   int array[i];
}
Gast #3827512
Lesenswert?
• ▲
▼
Mike schrieb:
> Belegt eine const-Variable dann auch Speicherplatz im RAM?

Im Prinzip ja. Aber der Optimierer kann sie unter bestimmten Umständen 
"vernichten", da sie nicht benötigt wird. Dazu muss sie aber "static" 
oder lokal sein oder der Compiler macht das mit einem 
Link-Time-Optimizer.

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.