Error del compilador C2057
se esperaba una expresión constante
El contexto exige una expresión constante, una expresión cuyo valor se conoce en tiempo de compilación.
El compilador debe conocer el tamaño de un tipo en tiempo de compilación para poder asignar espacio para una instancia de ese tipo.
Ejemplos
El ejemplo siguiente genera el error C2057 y muestra cómo corregirlo:
// C2057.cpp
int i;
int b[i]; // C2057 - value of i is unknown at compile time
int main() {
const int i = 8;
int b[i]; // OK - value of i is fixed and known to compiler
}
C tiene reglas más restrictivas para las expresiones de constante. El ejemplo siguiente genera el error C2057 y muestra cómo corregirlo:
// C2057b.c
#define ArraySize1 10
int main() {
const int ArraySize2 = 10;
int h[ArraySize2]; // C2057 - C does not allow variables here
int h[ArraySize1]; // OK - uses preprocessor constant
}