ошибка: объект переменного размера, возможно, не инициализирован |

#c

#c

Вопрос:

Мой код, приведенный ниже:

 const size_t NUM_P = 100;
int main (viod)
{
   char *pS[NUM_P] = { NULL};            /* Array of string pointer */
   /* Other code */
}
  

Мой компилятор является CODEBLOCK, ошибка будет устранена, когда NUM_P будет изменен на цифры, такие как «12 или 35 ..», я не знаю основную причину ошибки, или это проблема моего компилятора.

Ответ №1:

Корень вашей проблемы в том, что NUM_P это переменная, даже если это const единица.

Замените его объявление на #define NUM_P 100 , и ваш код снова скомпилируется.

Ответ №2:

В C вам не разрешено предоставлять инициализатор для VLAS.

Я бы предложил использовать константу времени компиляции для измерения массива; тогда это не VLA:

 #define NUM_P 100

int main(void)
{  
    char *pS[NUM_P] = { 0 };
}
  

По историческим причинам const переменная не считается постоянным выражением в C.

Комментарии:

1. Хорошо, это означает, что переменная const по-прежнему является переменной, но нам нужна константа?

Ответ №3:

Это допустимо в C , но не в C. Для этого можно использовать символ препроцессора в C.

 #define NUM_P 100
int main (viod)
{
   char *pS[NUM_P] = { NULL};
}