自 C99 发布以来已经十多年了。然而,到目前为止,几乎没有编译器支持 C99 的所有新特性。为什么?
BTW:真的有完全符合 C99 的编译器吗?
自 C99 发布以来已经十多年了。然而,到目前为止,几乎没有编译器支持 C99 的所有新特性。为什么?
BTW:真的有完全符合 C99 的编译器吗?
根据Wikipedia: C99 Implementations,大多数流行的编译器(Visual Studio 除外)支持大多数但不是所有 C99 功能(如 gcc 或 clang),但是,是的,一些编译器已经完全符合 C99。
我认为原因之一是某些 C99 功能对某些编译器供应商没有用处。另一方面,最新的标准 C11 允许实现不支持标准的某些部分——包括 C99 中强制支持的一些部分,如复杂类型和可变长度数组。(参见 C11 §6.10.8.3条件特征宏)
BTW:真的有完全符合 C99 的编译器吗?
两大公域编译器 clang 和 gcc 都可以的。C 库中可能还存在一些小问题,但 C 库通常是与编译器不同的项目。
clang 将 C99 作为其默认值,并且相对快速地向 C11 移动。
带有标志-std=c99
的 gcc 符合任何实际目的。