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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren