C99 stdint.h header and MS Visual Studio
Asked Answered
M

7

119

To my amazement I just discovered that the C99 stdint.h is missing from MS Visual Studio 2003 upwards. I'm sure they have their reasons, but does anyone know where I can download a copy? Without this header I have no definitions for useful types such as uint32_t, etc.

Magnifico answered 24/9, 2008 at 9:53 Comment(2)
As an update to this: MSVC 2010 now includes stdint.hMazda
Going by this blog: blogs.msdn.com/b/vcblog/archive/2014/11/17/…, VS 2015 Preview fully supports the C99 Standard Library (with the only omissions being tgmath.h, which requires C compiler magic and is not relevant to C++ which has overloading, and CX_LIMITED_RANGE/FP_CONTRACT which also require compiler support).Beffrey
M
85

Turns out you can download a MS version of this header from:

https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h

A portable one can be found here:

http://www.azillionmonkeys.com/qed/pstdint.h

Thanks to the Software Ramblings blog.

NB: The Public Domain version of the header, mentioned by Michael Burr in a comment, can be find as an archived copy here. An updated version can be found in the Android source tree for libusb_aah.

Magnifico answered 24/9, 2008 at 9:54 Comment(3)
A public domain (not an MIT/BSD license - you don't even need to keep a copyright attribution around) stdint.h for MSVC (a slightly modified version from MinGW): snipplr.com/view/18199/stdinthMazda
The first link 404sPliers
Modified the original answer but: github.com/mattn/gntp-send/blob/master/include/msinttypes/… the svn link is deadPatrinapatriot
I
50

Just define them yourself.

#ifdef _MSC_VER

typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;

#else
#include <stdint.h>
#endif
Ibadan answered 24/9, 2008 at 13:37 Comment(2)
Am I missing something or shouldn't it be typedef unsigned __int64 uint64_t; ?Codpiece
And to use literal uint64_t values it is useful to #define U64(u) (u##ui64) on Windows and to #define U64(u) (u##ULL) otherwise.Teston
S
49

Update: Visual Studio 2010 and Visual C++ 2010 Express both have stdint.h. It can be found in C:\Program Files\Microsoft Visual Studio 10.0\VC\include

Swagerty answered 13/4, 2010 at 8:26 Comment(1)
As well as <cstdint> for C++ users who like it in std::.Chiliad
D
25

Visual Studio 2003 - 2008 (Visual C++ 7.1 - 9) don't claim to be C99 compatible. (Thanks to rdentato for his comment.)

Darb answered 24/9, 2008 at 11:53 Comment(0)
P
11

Boost contains cstdint.hpp header file with the types you are looking for: http://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp

Periphery answered 24/9, 2008 at 13:56 Comment(3)
boost is C++, the question is on C99Malvoisie
It is not clear - he is asking about a C99 header in Visual Studio, without specifying which language he is using. In any case it can't be C99 because Microsoft does not support it.Periphery
OP wants a copy of <stdint.h>, not a Boost header.Labile
G
6

Microsoft do not support C99 and haven't announced any plans to. I believe they intend to track C++ standards but consider C as effectively obsolete except as a subset of C++.

New projects in Visual Studio 2003 and later have the "Compile as C++ Code (/TP)" option set by default, so any .c files will be compiled as C++.

Grapevine answered 24/9, 2008 at 16:4 Comment(0)
L
4

Another portable solution:

POSH: The Portable Open Source Harness

"POSH is a simple, portable, easy-to-use, easy-to-integrate, flexible, open source "harness" designed to make writing cross-platform libraries and applications significantly less tedious to create and port."

http://poshlib.hookatooka.com/poshlib/trac.cgi

as described and used in the book: Write portable code: an introduction to developing software for multiple platforms By Brian Hook http://books.google.ca/books?id=4VOKcEAPPO0C

-Jason

Looksee answered 25/5, 2009 at 21:51 Comment(2)
From Poshlib Wikipedia article, the link authorization is:username: guest, password: guest123Stace
Grand total of 3 commits, last one dated September 2006Lordly

© 2022 - 2024 — McMap. All rights reserved.