Попытка присвоить новое значение константе - PullRequest
0 голосов
/ 31 декабря 2010

Это извлечено из моего модуля:

При попытке присвоить новое значение константе после ее инициализации компилятор выдает (только) предупреждающее сообщение.

Это неверно в C99, но мой модуль, похоже, основан на C89, может кто-нибудь подтвердить правильность этого утверждения в соответствии с C89.

Ответы [ 2 ]

2 голосов
/ 31 декабря 2010

C89 и C99, кажется, оба генерируют error для этого случая, который выглядит правильно, используя код в http://ideone.com/x8lXL;

# C89
[~]> gcc -std=c89 test.c
test.c: In function ‘main’:
test.c:5: error: assignment of read-only variable ‘A’

# C99
[~]> gcc -std=c99 test.c
test.c: In function ‘main’:
test.c:5: error: assignment of read-only variable ‘A’

Также обратите внимание, что clangсоглашается gcc здесь.

0 голосов
/ 31 декабря 2010

Я только что проверил основные отличия C99 от C89, и ничего не сказано об изменениях в ключевом слове const.

[не по теме] Однако я не получаю все стандартные версии C89. Кто-нибудь знает, откуда я могу его скачать?

...