Kann eine const-Variable verwendet werden, um die Größe eines Arrays in C zu deklarieren?

Warum funktioniert der folgende code einen Fehler auslösen?

const int a = 5;
int b[a]={1,2,3,4,5};

Und auch wenn ich versucht zu kompilieren, der code oben ohne "const" - Schlüsselwort, ich habe den gleichen Fehler:

int a = 5; 
int b[a]={1,2,3,4,5};

warum ist es so?
Was ist der Fehler, den ich hier mache?

Und auch eine andere Frage:
Wenn die Konstanten ersetzt durch Ihre aktuellen Werte in einem code, ich.e wenn ich eine variable deklarieren, die sagen: const int x= 5;
Ich weiß, dass kein Speicher reserviert im RAM für die variable x, aber Konstante Variablen Bereich in ROM enthält den Wert 5 und x wird einfach ersetzt durch den Wert 5 überall x in dem code erscheint. Aber Wann wird dies geschehen? Kompilierung? Boot-up-Zeit? Preprocessing-Zeit?

PS: ich spreche von Embedded-C - (läuft auf einem Mikrocontroller, etc), nicht C läuft auf meinem desktop. Also das embedded-system ist verpflichtet, einen ROM-Speicher (Flash, EEPROM...). Was würde dann passieren?

Kommentar zu dem Problem
Compilation-Zeit. btw ROM ist wie dvd ' s und solche, es gibt keine gebaut in ROM im PC (wenn würde es aufgefüllt werden, eh?) Kommentarautor: Valerij
@Vprimachenko: OT: Könnte nicht das BIOS sein als ROM? Zumindest dort, wo Tage mussten Sie ziehen Sie es aus dem sockel zu re-schreiben. Kommentarautor: alk
Man könnte eine enum-anstelle einer const. Kommentarautor: Simon Elliott
@alk du hast Recht, habe nicht daran gedacht, dass Kommentarautor: Valerij

InformationsquelleAutor der Frage user1901196 | 2013-09-17

Schreibe einen Kommentar