1

我感兴趣地阅读了帖子“C99 的支持有多普遍?”。其中的一条评论指出微软不支持 C99。但是注释符号 // 适用于 VS 2008,并且该符号在 C99 中。我有两个问题:

  1. VS 2008 在多大程度上支持 C99?

  2. 可以在同一代码中将 C89 和 C99 语法混合在一起吗?因此,如果我在 C89 中编写代码,然后添加注释 //。这意味着我有混合编码。那么在这种情况下编译器会做什么呢?先用 c89 检查我的代码,然后用 C99 检查我的代码是否接受我使用 // 进行评论?

4

1 回答 1

4

MSVC 在 C 模式下支持很少的 C99。它所做的一些事情(如'//' 注释)实际上是他们添加到来自 C++ 的 C90 模式的扩展,这可能恰好也在 C99 中。在编译 C 代码时,MSVC 将“//”注释视为 C90 的扩展,而不是您将 C90 代码与 C99 代码混合。

通过将 C 文件编译为 C++,您将获得“更好的”C99 支持 - 例如,您将获得可以与语句和变量声明散布在循环for范围内的语句中的声明。for

微软似乎对将 C99 支持添加到 MSVC 的兴趣为零——即使他们将 C99 中的内容添加到 C++ 编译器模式(如stdint.h在 VS2010 中添加),因为在 C++0x 中将一些额外的 C99 内容添加到 C++ 中。

于 2010-04-16T21:03:12.903 回答