Does Microsoft visual studio 2010 support c99?
Asked Answered
G

3

13

I would like to know if Microsoft Visual Studio 2010 supports C99. If not, how can I use the standard types like intptr_t and uintptr_t?

Grievance answered 14/7, 2011 at 5:39 Comment(4)
possible duplicate of Visual Studio support for new C / C++ standards?Tubby
That's the 2008 edition, so not an exact duplicate.Boardman
herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99 pretty much says everything there is to say on the subject.Mayday
Looks like we're going to have C99 library support in Visual Studio 2013!Lollipop
N
8

As far as I can tell, Visual Studio 2010 does not support C99. To use types from stdint.h, you will have to use a typedef. A cross-platform way to do this would be:

#ifdef _WIN32
typedef signed short int16_t
#else
#include <stdint.h>
#endif

See also this this question: Visual Studio support for new C / C++ standards?

Northerner answered 14/7, 2011 at 5:44 Comment(6)
What about the printing factor I use? In C99 zd works fine for both 32 bit and 64 bit environment.Grievance
Sorry, what is a "printing factor" and what is a "zd"?Northerner
%zd print factor for intptr_t as %d for intGrievance
Just make sure to pick the real type, rather than the "signed short" placeholder in the example.Milkmaid
@Grievance That's not called a "printing factor", it's called a "conversion specifier".Staphylo
It doesn't implement all of C99, but MSVC 2010 does have intptr_t: msdn.microsoft.com/en-us/library/323b6b3k%28v=vs.100%29.aspxHiding
N
13

Visual Studio 2010 does not support C99 syntax. stdint.h is a very common file in all C/C++ compilers, though, which does exist in a Visual C++ 10.0 installation, included with the Windows SDK (regardless of the version of Visual Studio that you use).

stdint.h can be found in:

  • C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\

This file does provide a typedef for intptr_t. Feel free to use it in any C or C++ project you like.

Nonsuit answered 14/7, 2011 at 5:45 Comment(0)
N
8

As far as I can tell, Visual Studio 2010 does not support C99. To use types from stdint.h, you will have to use a typedef. A cross-platform way to do this would be:

#ifdef _WIN32
typedef signed short int16_t
#else
#include <stdint.h>
#endif

See also this this question: Visual Studio support for new C / C++ standards?

Northerner answered 14/7, 2011 at 5:44 Comment(6)
What about the printing factor I use? In C99 zd works fine for both 32 bit and 64 bit environment.Grievance
Sorry, what is a "printing factor" and what is a "zd"?Northerner
%zd print factor for intptr_t as %d for intGrievance
Just make sure to pick the real type, rather than the "signed short" placeholder in the example.Milkmaid
@Grievance That's not called a "printing factor", it's called a "conversion specifier".Staphylo
It doesn't implement all of C99, but MSVC 2010 does have intptr_t: msdn.microsoft.com/en-us/library/323b6b3k%28v=vs.100%29.aspxHiding
P
2

Microsoft C does not support C99. However, MSVC 16 (what's provided with Visual Studio 2010) implements a good portion of the upcoming C++0x standard. C++0x is incorporating some of the headers from C99, such as stdint.h and inttypes.h - that's why you get some tidbits of C99 with MSVC 16.

Be thankful for small things (I wish MSVC supported a bit more of C99 when compiling straight C files).

Panocha answered 14/7, 2011 at 5:55 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.