Ответ 1
Вы получаете предупреждение с -std=c89 -pedantic
. C99 и более поздние версии допускают другие определяемые реализацией символы в идентификаторах.
Я новичок в C и изучаю C из программирования в C, 4-е изд. Стивен Кочан. На странице 29 он пишет, что $
не является допустимым символом для имен переменных. Он использует стандарт C11.
Я написал следующий код
#include <stdio.h>
int main (void)
{
int a$ = 1;
printf ("%i", a$);
return 0;
}
и запустил его с помощью команды gcc -std=c11 -pedantic practice.c -o practice.o &&./practice.o
. Мое имя файла - practice.c
.
Выход 1
. Разве компилятор не должен давать мне предупреждение за использование $
? Разве использование $
sign для идентификаторов не является расширением, которое предоставляет GCC?
Я использую GCC 8.2.0 в Ubuntu 18.10.
Редактировать:
Кроме того, не использует ли GCC расширения GNU, когда я использую -std=c11
? Это то, что написано в приложении к книге (стр. 497).
Я получаю предупреждение, используя -std=c89
хотя.
Вы получаете предупреждение с -std=c89 -pedantic
. C99 и более поздние версии допускают другие определяемые реализацией символы в идентификаторах.
В соответствии с этим: документация GCC
В GNU C вы можете обычно использовать знаки доллара в именах идентификаторов. Это потому, что многие традиционные реализации C допускают такие идентификаторы. Однако знаки доллара в идентификаторах не поддерживаются на нескольких целевых машинах, обычно потому, что целевой ассемблер их не допускает.
Итак, $
допустимо, но это не соответствующий способ написания кода на C.