Error C2057: konstanter Ausdruck erwartet
if(stat("seek.pc.db", &files) ==0 )
sizes=files.st_size;
sizes=sizes/sizeof(int);
int s[sizes];
Ich bin kompilieren in Visual Studio 2008, und ich erhalte die folgende Fehlermeldung:
error C2057: konstanter Ausdruck erwartet
error C2466: nicht der Zuweisung eines Arrays der Konstanten Größe 0.
Versuchte ich mit Vektor s[Größen] aber ohne Erfolg. Was mache ich falsch?
Dank!
- Wollte nur mitteilen, dass es ein compiler-abhängige problem, versuchen Sie es mit gcc (C99) wird der code kompiliert werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Größen der array-Variablen in C müssen zum Zeitpunkt der Kompilierung bekannt. Wenn Sie wissen, dass es nur bei der Laufzeit müssen Sie
malloc
einige Speicher selbst statt.cannot allocate an array of constant size 0
Fehler kann nur der compiler verwirrt.)new int[size]
ist keine C-syntax, C++.Größe eines Arrays muss eine compile-Zeit-Konstante. Allerdings C99 unterstützt variable length arrays. Also anstatt für Ihren code, um die Arbeit auf Ihre Umgebung, wenn die Größe des Arrays bekannt ist, zur Laufzeit dann -
Bezüglich der Fehlermeldung:
const int size = 5;
?int *s=new int[sizes];
. Ihre mir System.AccessViolationException Fehler. Ist es deswegen?new
. Wahrscheinlich haben Sie Zugriff auf einen index außerhalb 0 bis Größe - 1.