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