web-dev-qa-db-fra.com

En-tête C99 stdint.h et MS Visual Studio

À mon grand étonnement, je viens de découvrir que le fichier stdint.h C99 est absent de MS Visual Studio 2003. Je suis sûr qu'ils ont leurs raisons, mais est-ce que quelqu'un sait où je peux télécharger une copie? Sans cet en-tête, je n'ai pas de définition pour les types utiles tels que uint32_t, etc.

113
Rob

Il s'avère que vous pouvez télécharger une version MS de cet en-tête à partir de:

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

Un portable peut être trouvé ici:

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

Merci au blog Software Rambling s.

82
Rob

Il suffit de les définir vous-même.

#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
45
Nicholas Mancuso

Mise à jour: Visual Studio 201 et Visual C++ 2010 Express ont tous deux stdint.h. On peut le trouver dans C:\Program Files\Microsoft Visual Studio 10.0\VC\include

44
Ashwin Nanjappa

Visual Studio 2003 - 2008 (Visual C++ 7.1 - 9) ne prétend pas être compatible avec C99. (Merci à rdentato pour son commentaire.)

23
Adam Mitz

Boost contient le fichier d’en-tête cstdint.hpp avec les types que vous recherchez: http://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp

11
Nemanja Trifunovic

Microsoft ne prend pas en charge C99 et n’a annoncé aucun projet. Je crois qu'ils ont l'intention de suivre les normes C++, mais considèrent le C comme effectivement obsolète, sauf comme un sous-ensemble du C++.

Dans les nouveaux projets de Visual Studio 2003 et versions ultérieures, l'option "Compiler en tant que code C++ (/ TP)" est définie par défaut. Ainsi, tous les fichiers .c seront compilés en tant que C++.

5
Mike Dimmick

Une autre solution portable:

POSH: le harnais portable Open Source

"POSH est un" harnais "open source simple, portable, facile à utiliser, facile à intégrer, flexible et conçu pour rendre l'écriture de bibliothèques et d'applications multiplates-formes beaucoup moins fastidieuse à créer et à porter.

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

comme décrit et utilisé dans le livre: Écrire un code portable: introduction au développement de logiciels pour plusieurs plates-formes Par Brian Hook http://books.google.ca/books?id=4VOKcEAPPO0C

-Jason

4
Jason Harrison