为什么很少有符合C99的编译器?

时间:2013-07-31 04:59:57

标签: c compiler-construction c99

自C99发布以来已有十多年了。但是,到目前为止,很少有编译器能够支持C99的所有新功能。为什么呢?

BTW:是否真的有任何编译器完全符合C99?

2 个答案:

答案 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符合任何实际目的。