C99 和 GNU99 的区别
先说结论:GUN99 是最常用的 C 标准。
定义
-
C99: 这是 1999 年发布的 C 语言标准(ISO/IEC 9899:1999)。它引入了许多新特性,如布尔类型、复合字面量、可变参数宏等。使用
c99
编译器选项时,代码将遵循这一标准。 -
GNU99: 这是基于 C99 标准的 GNU 扩展版本。使用
gnu99
选项时,除了 C99 的特性外,还可以使用 GNU 编译器(GCC)提供的一些额外功能和扩展。这些扩展可能包括额外的语法和库函数,这些在标准 C 中并不被支持。
主要区别
特性 | C99 | GNU99 |
---|---|---|
标准 | 遵循 ISO C99 标准 | C99 加上 GNU 扩展 |
扩展 | 不支持 GNU 特有扩展 | 支持 GNU 特有扩展 |
兼容性 | 严格遵循标准 | 允许使用非标准的 GNU 特性 |
默认设置 | 不定义 __STRICT_ANSI__ |
定义__STRICT_ANSI__ 以禁用所有 GNU 扩展 |
使用频率
在实际应用中,GNU99 更为常用,尤其是在使用 GCC 编译器的环境中。由于 GCC 广泛用于各种开发环境,许多开发者倾向于利用其扩展功能来简化编程或提高性能。因此,尽管 c99
提供了一个严格的标准环境,但在实际开发中,gnu99
的灵活性使其成为更常见的选择。
参见: