如何普遍地是C99标准支持在今天的编译器?我的理解是,甚至没有海湾合作委员会完全支持它。是这个吗?

其功能的C99支持多其他人,即这可以我用的是相当肯定的,大多数编纂者将能了解我吗?

有帮助吗?

解决方案

如果你想编写可移植的C代码,那么我建议你用C89(旧的ANSI C标准)编写。大多数编译器都支持此标准。

英特尔C编译器非常好C99支持,它可以生成快速的二进制文件。 (谢谢 0x69 !)

MSVC支持一些新功能和微软计划在未来版本中扩大支持。

GCC支持C99的一些新功能。他们创建了一个关于 C99功能状态的表格。可能C99最有用的功能是可变长度阵列,GCC现在支持它。 Clang (LLVM的C fronted)支持除浮点pragma之外的大多数功能。

Wikipedia似乎有编译器的 C99支持的精彩摘要

其他提示

有人提到英特尔编译器有C99支持。还有 科莫C/C++编译器 这完全支持C99。这些是唯一我知道的。

C99的功能,我做不使用,因为它们不支持包括:

  • 变长阵列
  • 宏变量的参数。

C99特点,我经常使用,似乎是很好的支持(除了通过Microsoft):

  • stdint.h
  • snprintf() -MS有一个非标准 _snprintf() 这已严重限制,不总是空终止缓冲区并不表示有多大的缓冲区应

工作周围微软的非的支持,我用一个 公共领域 stdint.h 从MinGW (我修改为还在工作VC6)和一个 近公共领域 snprintf() 从Holger Weiss

的项目,Microsoft不支持,但仍将使用的其他汇编者根据该项目包括:

  • 混合的声明和代码
  • 内联的功能
  • _Pragma() -这使得杂注更有用

对于gcc,有一个包含所有受支持功能的表。似乎缺少的最大的东西是可变长度数组。大多数其他缺少的功能是库问题而不是语言功能。

IBM c编译器在作为c99调用时具有c99支持,但在作为cc或xlc调用时则不支持。

查看 GNU的C99支持状态,了解当前支持哪些功能的详细信息。

Sun Studio 据称是支持整个C99规范。我从来没有用过它们,所以我无法确认。

我不相信微软编译器完全支持C99规范。他们目前更关注C ++

Clang(基于LLVM的C和C ++编译器)具有相当不错的C99支持。我认为它唯一不支持的是浮点编译指示。

Microsoft似乎在跟踪C ++标准,但不支持C99。 (他们可能会挑选一些功能,但可以说是在重叠的地方挑选C ++ 0x。)

从Visual Studio .NET 2003开始,新项目默认启用“编译C代码为C ++(/ TP)”选项。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top