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

标签 c gcc gcc-warning

我是 C 的新手,正在从 C 编程,第 4 版学习 C。斯蒂芬·科尚着。在第 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在标识符中。

关于c - 为什么 gcc 不显示在变量名中使用 $ 的警告消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55087023/

相关文章:

c - 释放 C 中的结构元素

c - 我如何知道一条消息已到达c中的共享内存

c - 如何将二维数组中某一行的所有索引加在一起?

c++ - 为什么 GCC 不允许我创建 `inline static std::stringstream` ?

c++ - C++ pre Increment 和 post Increment 的奇怪体验

c++ - 代码生成 wreorder 警告

带有可变参数的 C printf 说明符。未定义的行为在哪一点上有问题?

c - 在 C 中将字符串转换为 long long 时出现问题

c++ - 为什么 GCC 在我有至少一个参数时声称我违反了 "at least one argument for variadic macro"?

c++ - 警告 : overflow in implicit constant conversion