Посмотрите на приведенный ниже код,
Этот код прекрасно компилируется:
enum ids {
X,
Y,
NUM_IDS,
}
void some_func(void)
{
static char* const names[NUM_IDS] = { "name X" , "name Y"};
}
Однако этот код не компилируется: ошибка: размер хранилища 'names'не константа
enum ids {
X,
Y,
NUM_IDS,
}
void some_func(void)
{
int nr_names = NUM_IDS;
static char* const names[nr_names] = { "name X" , "name Y"};
}
Мне кажется, я неправильно понял значение константного выражения.Это тот случай, когда вторым способом становится VLA, которого нет в C90?Кто-нибудь, пожалуйста, уточните.