我是C的新手,我正在从C编程中学习C,第4版。作者:Stephen Kochan。在页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
。编译器不应该给我一个使用$
的警告吗?是不是使用$
标志作为GCC提供的扩展名?
我在Ubuntu 18.10中使用GCC 8.2.0。
编辑:
另外,当我使用-std=c11
时,GCC不使用GNU扩展吗?这就是本书附录(第497页)中的内容。
我通过使用-std=c89
得到警告。
你得到-std=c89 -pedantic
的警告。 C99及更高版本允许在标识符中使用other implementation-defined characters。
根据这个:GCC Documentation
在GNU C中,您通常可以在标识符名称中使用美元符号。这是因为许多传统的C实现允许这样的标识符。但是,少数目标计算机不支持标识符中的美元符号,这通常是因为目标汇编程序不允许这些符号。
所以,$
是有效的,但它不是一种符合C的代码方式。