我是C语言的新手,正在第四版的 Programming in C 中学习C语言。由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
得到警告。
答案 0 :(得分:11)
您收到-std=c89 -pedantic
的警告。 C99和更高版本允许在标识符中使用other implementation-defined characters。
答案 1 :(得分:2)
在GNU C中,通常可以在标识符名称中使用美元符号。这个 这是因为许多传统的C实现都允许使用此类标识符。 但是,少数目标不支持标识符中的美元符号 机器,通常是因为目标汇编器不允许它们。
因此,$
是有效的,但这不是用C语言进行编码的一致方式。