#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};
}