我感兴趣地阅读了这篇文章“C99如何被普遍支持?”。其中的一条评论指出,微软不支持C99。但评论符号//与VS 2008一起工作,这个符号在C99中。我有两个问题:MS VS 2008和C99
VS 2008支持C99到什么程度?
在相同的代码中混合使用C89和C99语法可以吗?所以如果我在C89中编写我的代码,然后发表评论//。这意味着我有混合编码。那么编译器在这种情况下做了什么?首先用c89检查我的代码,然后用C99接受我使用//进行评论?
我感兴趣地阅读了这篇文章“C99如何被普遍支持?”。其中的一条评论指出,微软不支持C99。但评论符号//与VS 2008一起工作,这个符号在C99中。我有两个问题:MS VS 2008和C99
VS 2008支持C99到什么程度?
在相同的代码中混合使用C89和C99语法可以吗?所以如果我在C89中编写我的代码,然后发表评论//。这意味着我有混合编码。那么编译器在这种情况下做了什么?首先用c89检查我的代码,然后用C99接受我使用//进行评论?
MSVC在C模式下支持很少的C99。它所做的一些事情(如'//'注释)实际上是他们添加到C90模式的扩展,它们来自C++,这可能也发生在C99中。编译C代码时,MSVC将'//'注释视为C90的扩展,而不是将C90代码与C99代码混合在一起。
你会被编译你的C文件作为C++获得“好”的C99支持 - 以这种方式,你会得到可与被限定在for
环路for
的陈述和变量声明穿插声明,对例。
微软似乎没有兴趣向MSVC添加C99支持 - 即使它们将C99中的东西添加到C++编译器模式(如在VS2010中添加了stdint.h
),因为C++中有一些额外的C99事件正在添加到C++中, + 0X。
谢谢。我通常使用扩展名c而不是cpp来保存文件,因为我在C中工作。扩展名对编译器有影响吗?奇怪的是,没有提到MSVC有一个C编译器;它只是提到了C++编译器。 – yCalleecharan 2010-04-16 21:07:22
扩展名默认情况下有所不同 - .c文件以C模式编译,.cpp和.cxx文件以C++模式编译。您可以使用'/ TP'或'/ Tp'来强制编译为C++和'/ TC'或'/ Tc '强制编译为C:http://msdn.microsoft.com/en-我们/图书馆/ 032xwy55.aspx –
2010-04-16 21:11:13
这是有趣的知道。谢谢。 – yCalleecharan 2010-04-16 21:12:06