在 Linux 下的 gcc 或 clang 编译器中调用不同版本的 C 语言标准编译程序以及查看本机默认编译标准的方法

假设我们要编写的 C 语言源代码文件的文件名称是 a.c

则,在 gcc 下指定编译器编译标准的命令为:

gcc -std=c99 a.c //调用 C99 标准
gcc -std=c1x a.c //调用 GCC 接受 C11 之前的草案标准
gcc -std=c11 a.c //调用 C11 标准

clang 编译器与 gcc 编译器用法相同, 如果要使用 clang 编译器, 则将 gcc 替换成 clang 即可.

如果想查看当前使用的 gcc 编译器默认的编译标准, 在 Ubuntu Linux 中可以使用如下命令查看 C 语言的所有预编译宏:

gcc -E -dM - </dev/null

在输出的结果中查看 #define __STDC_VERSION__ 的值, 不同值代表的不同编译标准如下:

#define __STDC_VERSION__ 199901L //C99 标准
#define __STDC_VERSION__ 201112L //C11 标准

输出结果的局部截图如图 1 所示:

图 1 当前编译器默认支持 C11 编译标准
图 1 当前编译器默认支持 C11 编译标准

为了更方便查找, 我们也可以结合 grep#define __STDC_VERSION__ 关键字进行过滤, 命令:

gcc -E -dM - </dev/null | grep -e "#define __STDC_VERSION__"

上述命令的运行结果如图 2 所示:

图 2 当前编译器默认支持 C11 编译标准
图 2 当前编译器默认支持 C11 编译标准