我饶有兴趣地阅读了“C99 的支持程度如何?”一文。其中一条评论指出 Microsoft 不支持 C99。但是注释符号//适用于 VS 2008,并且此符号在 C99 中。我有两个问题:
VS 2008 在多大程度上支持 C99?
在同一代码中可以将 C89 和 C99 语法混合在一起吗?因此,如果我用 C89 编写代码,然后添加注释//。这意味着我有混合编码。那么编译器在这种情况下会做什么呢?先用 c89 检查我的代码,然后用 C99 接受我使用//进行注释?
最佳答案
MSVC 在 C 模式下支持很少的 C99。它所做的一些事情(如'//'注释)实际上是他们添加到来自 C++ 的 C90 模式的扩展,这可能恰好也在 C99 中。编译 C 代码时,MSVC 将“//”注释视为 C90 的扩展,而不是将 C90 代码与 C99 代码混合在一起。
通过将 C 文件编译为 C++,您将获得“更好的”C99 支持 - 这样您将获得可以散布在范围内的 for
语句中的语句和变量声明的声明例如,for
循环。
Microsoft 似乎对向 MSVC 添加 C99 支持没有兴趣——即使他们将 C99 中的内容添加到 C++ 编译器模式(例如 stdint.h
被添加到 VS2010 中),因为一些额外的 C99 内容在 C++0x 中被添加到 C++。
关于c - MS VS 2008 和 C99,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2656080/