在 CentOS 上,GCC 是否支持 C11,取决于你安装的 GCC 版本。
编译时需加参数:
gcc -std=c11 -Wall test.c -o test
或:
gcc -std=gnu11 test.c -o test
⚠️ 不写
-std=c11时,默认是 GNU89(老标准)
gcc -std=c11 test.c
如果你在用 CentOS 7,但想要新 GCC:
yum install centos-release-scl
yum install devtoolset-9-gcc devtoolset-9-gcc-c++
scl enable devtoolset-9 bash
然后:
gcc --version
gcc -std=c11 test.c
gcc --version
并测试:
echo '_Thread_local int x;' | gcc -std=c11 -x c - -c
不报错说明支持。
_Generic、_Static_assert、_Thread_local 需 C11pthread、atomics 在 C11 中更标准set(CMAKE_C_STANDARD 11)
CentOS 上的 GCC 支持 C11,但老版本必须加
-std=c11,新版(8+)直接可用。
如果你是 CentOS 7 + GCC 4.8.5,我可以给你一条最稳的升级方案。