Страниц: [1]
  Печать  
Автор Тема: E1054 Expression must be constant  (Прочитано 2354 раз)
qnx_user
Full Member
***
Offline Offline

Сообщений: 113


Просмотр профиля
« : Января 10, 2013, 10:17:12 pm »

ОС QNX 4.25, Watcom 10.6.
 
Код: (program.c)
[160] char a[] = {0, 0, 0, 0, 0, 0};
...
[163] static const unsigned int num_a = countof(a);
...
[582] int b[num_a];

При компиляции wcc386 выдает:
./program.c(582): Error! E1054: Expression must be constant
./program.c(582): Error! E1020: Dimension cannot be 0 or negative

не хочется использовать #define num_a countof(a).

P.S. Это какая-то особенность стандарта C99?
Записан
lestat
QOR.Moderator
*****
Offline Offline

Сообщений: 985


I don't trust anything


Просмотр профиля WWW
« Ответ #1 : Января 10, 2013, 11:00:03 pm »

Если мне не изменяет память, то C99 как раз это разрешает, а вот С89/C90 нет. Проще говоря размер "a" ещё неизвестен (а именно -1) на момент инициализации num_a.
Записан

qnx_user
Full Member
***
Offline Offline

Сообщений: 113


Просмотр профиля
« Ответ #2 : Января 10, 2013, 11:18:38 pm »

Если мне не изменяет память, то C99 как раз это разрешает.
Я это и имел ввиду, когда спросил про особенность Smiley
Спасибо.
Записан
Страниц: [1]
  Печать  
 
Перейти в: