C99 stdint.h Header und MS Visual Studio


113

Zu meinem Erstaunen habe ich gerade festgestellt, dass die C99 stdint.h ab MS Visual Studio 2003 fehlt. Ich bin mir sicher, dass sie ihre Gründe haben, aber weiß jemand, wo ich eine Kopie herunterladen kann? Ohne diesen Header habe ich keine Definitionen für nützliche Typen wie uint32_t usw.


41
Als Update dazu: MSVC 2010 enthält jetztstdint.h
Michael Burr

In diesem Blog: blogs.msdn.com/b/vcblog/archive/2014/11/17/… unterstützt VS 2015 Preview die C99-Standardbibliothek vollständig (mit den einzigen Auslassungen ist tgmath.h, für das C-Compiler-Magie und erforderlich sind ist nicht relevant für C ++ mit Überladung und CX_LIMITED_RANGE / FP_CONTRACT, für die ebenfalls Compilerunterstützung erforderlich ist.
Vulkanischer Rabe

Antworten:


82

Es stellt sich heraus, dass Sie eine MS-Version dieses Headers herunterladen können von:

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

Eine tragbare finden Sie hier:

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

Vielen Dank an den Blog von Software Rambling .


13
Eine gemeinfreie Domain (keine MIT / BSD-Lizenz - Sie müssen nicht einmal eine Urheberrechtsangabe behalten) stdint.h für MSVC (eine leicht modifizierte Version von MinGW): snipplr.com/view/18199/stdinth
Michael Burr

Der erste Link 404s
Matthew Moisen

Die ursprüngliche Antwort wurde geändert, aber: github.com/mattn/gntp-send/blob/master/include/msinttypes/… der SVN-Link ist tot
smaudet

46

Definieren Sie sie einfach selbst.

#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

4
Vermisse ich etwas oder sollte es nicht typedf unsigned sein __int64 uint64_t; ?
Roman A. Taycher

1
Und um literale uint64_t-Werte zu verwenden, ist es nützlich, #define U64(u) (u##ui64)unter Windows und auf #define U64(u) (u##ULL)andere Weise.
Niklas

45

Update: Visual Studio 2010 und Visual C ++ 2010 Express haben beide stdint.h. Es kann in gefunden werdenC:\Program Files\Microsoft Visual Studio 10.0\VC\include


3
Sowie <cstdint> für C ++ - Benutzer, denen es gefällt std::.
Adrian McCarthy

23

Visual Studio 2003 - 2008 (Visual C ++ 7.1 - 9) erhebt keinen Anspruch auf C99-Kompatibilität. (Danke an rdentato für seinen Kommentar.)



5

Microsoft unterstützt C99 nicht und hat keine Pläne dazu angekündigt. Ich glaube, sie beabsichtigen, C ++ - Standards zu verfolgen, betrachten C jedoch als effektiv veraltet, außer als Teilmenge von C ++.

Bei neuen Projekten in Visual Studio 2003 und höher ist die Option "Als C ++ - Code (/ TP) kompilieren" standardmäßig festgelegt, sodass alle .c-Dateien als C ++ kompiliert werden.


4

Eine weitere tragbare Lösung:

POSH: Der tragbare Open Source-Kabelbaum

"POSH ist ein einfaches, tragbares, benutzerfreundliches, leicht zu integrierendes, flexibles Open-Source-" Harness ", mit dem das Schreiben plattformübergreifender Bibliotheken und Anwendungen erheblich einfacher zu erstellen und zu portieren ist."

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

wie im Buch beschrieben und verwendet: Schreiben Sie tragbaren Code: eine Einführung in die Entwicklung von Software für mehrere Plattformen Von Brian Hook http://books.google.ca/books?id=4VOKcEAPPO0C

-Jason


1
Aus dem Wikipedia-Artikel von Poshlib lautet die
Linkautorisierung

Insgesamt 3 Commits, letzter vom September 2006
AntoineL
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.