Поделиться через


Ошибка компилятора 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
}