使用相同标志的clang和gcc在行为上的差异?

使用相同标志的clang和gcc在行为上的差异?,c,gcc,clang,C,Gcc,Clang,在我的开发机器上,使用以下命令生成我的项目不会产生错误 clang-Wall-std=c89 main.c 但是,在另一台具有gcc的机器上,使用以下命令会产生错误 gcc-Wall-std=c89 main.c main.c:65:错误:“for”循环初始声明在C99模式之外使用 为什么在行为上会有这种差异 下面是我正在使用的clang和gcc的版本 clang --version Apple LLVM version 9.0.0 (clang-900.0.37) gcc --version

在我的开发机器上,使用以下命令生成我的项目不会产生错误

clang-Wall-std=c89 main.c

但是,在另一台具有gcc的机器上,使用以下命令会产生错误

gcc-Wall-std=c89 main.c

main.c:65:错误:“for”循环初始声明在C99模式之外使用

为什么在行为上会有这种差异

下面是我正在使用的clang和gcc的版本

clang --version
Apple LLVM version 9.0.0 (clang-900.0.37)

gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)

显然,clang是允许的,在c89标志下接受c99代码