微软的Visual Studio 2010支持C99吗?

13

我想知道 Microsoft Visual Studio 2010 是否支持 C99 标准。如果不支持,我该如何使用标准类型,例如 intptr_tuintptr_t


可能是Visual Studio支持新的C / C ++标准吗?的重复问题。 - Mitch Wheat
1
那是2008年的版本,所以不是完全相同的副本。 - Bo Persson
http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/ 已经涵盖了该主题的所有内容。 - Stephen Canon
1
看起来我们将在Visual Studio 2013中拥有C99库支持!(链接:http://blogs.msdn.com/b/vcblog/archive/2013/07/19/c99-library-support-in-visual-studio-2013.aspx) - Lumi
3个回答

13
Visual Studio 2010不支持C99语法。然而,stdint.h是所有C/C++编译器中非常常见的文件,在安装了Visual C++10.0(无论您使用哪个版本的Visual Studio)时已包含在Windows SDK中。
可以在以下路径找到 stdint.h 文件:
  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\
该文件为 intptr_t 提供了一种类型定义,可在任何C或C++项目中自由使用。

8
据我所知,Visual Studio 2010不支持C99。如果要使用stdint.h中的类型,您需要使用typedef。跨平台的做法如下所示:
#ifdef _WIN32
typedef signed short int16_t
#else
#include <stdint.h>
#endif

另请参阅这个问题:Visual Studio对新的C/C++标准的支持?


我使用的打印因子怎么样?在C99中,zd对于32位和64位环境都可以正常工作。 - thetna
抱歉,什么是“printing factor”,以及什么是“zd”? - David Grayson
1
%zd 打印 intptr_t 的因子为 %d,对于 int%d - thetna
3
请确保选择真正的类型,而不是示例中的“signed short”占位符。 - Jon Hess
@thetna 这不叫“打印因子”,而是叫“转换说明符”。 - user529758
它并没有实现C99的全部功能,但是MSVC 2010确实具有intptr_t:http://msdn.microsoft.com/en-us/library/323b6b3k%28v=vs.100%29.aspx - rdb

2

微软的C语言不支持C99。然而,MSVC 16(Visual Studio 2010提供的版本)实现了即将到来的C++0x标准的很大一部分。C++0x正在引入一些来自C99的头文件,例如stdint.hinttypes.h——这就是为什么你可以在MSVC 16中获得一些C99的小细节。

对于一些小事情要心存感激(希望MSVC能够在编译纯C文件时支持更多的C99特性)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接