Ошибка компилятора C2057
требуется константное выражение
Контекст требует константное выражение, то есть выражение, значение которого известно во время компиляции.
Компилятору необходимо знать размер типа во время компиляции, чтобы выделить пространство для экземпляра этого типа.
Примеры
В следующем примере показано возникновение ошибки C2057 и приводятся сведения по ее устранению.
// 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 имеет более строгие правила относительно константных выражений. В следующем примере показано возникновение ошибки C2057 и приводятся сведения по ее устранению.
// 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
}