为什么gcc没有显示在变量名中使用$的警告消息?

问题描述 投票:12回答:2

我是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得到警告。

c gcc gcc-warning
2个回答
11
投票

你得到-std=c89 -pedantic的警告。 C99及更高版本允许在标识符中使用other implementation-defined characters


2
投票

根据这个:GCC Documentation

在GNU C中,您通常可以在标识符名称中使用美元符号。这是因为许多传统的C实现允许这样的标识符。但是,少数目标计算机不支持标识符中的美元符号,这通常是因为目标汇编程序不允许这些符号。

所以,$是有效的,但它不是一种符合C的代码方式。

© www.soinside.com 2019 - 2024. All rights reserved.