Nagłówek C99 stdint.h i MS Visual Studio


113

Ku mojemu zdumieniu właśnie odkryłem, że od wersji MS Visual Studio 2003 w górę brakuje C99 stdint.h. Jestem pewien, że mają swoje powody, ale czy ktoś wie, skąd mogę pobrać kopię? Bez tego nagłówka nie mam definicji przydatnych typów, takich jak uint32_t itp.


41
W ramach aktualizacji: MSVC 2010 zawiera terazstdint.h
Michael Burr,

Przechodząc przez ten blog: blogs.msdn.com/b/vcblog/archive/2014/11/17/… , VS 2015 Preview w pełni obsługuje bibliotekę standardową C99 (z jedynymi pominięciami to tgmath.h, który wymaga magii kompilatora C i nie dotyczy C ++, który ma przeciążenie, i CX_LIMITED_RANGE / FP_CONTRACT, które również wymagają obsługi kompilatora).
Vulcan Raven

Odpowiedzi:


82

Okazuje się, że możesz pobrać wersję MS tego nagłówka z:

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

Przenośny można znaleźć tutaj:

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

Dzięki blogowi Software Rambling .


13
Domena publiczna (nie licencja MIT / BSD - nie musisz nawet zachowywać informacji o prawach autorskich) stdint.h dla MSVC (nieco zmodyfikowana wersja z MinGW): snipplr.com/view/18199/stdinth
Michael Burr

Pierwszy link 404s
Matthew Moisen

Zmodyfikowano oryginalną odpowiedź, ale: github.com/mattn/gntp-send/blob/master/include/msinttypes/ ... link svn jest martwy
smaudet

46

Po prostu zdefiniuj je samodzielnie.

#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
Czy czegoś brakuje lub nie powinno to być typedef unsigned __int64 uint64_t; ?
Roman A. Taycher,

1
I używanie dosłownych wartości uint64_t jest przydatne #define U64(u) (u##ui64)w systemie Windows i w #define U64(u) (u##ULL)innych przypadkach.
Niklas,

45

Aktualizacja: Visual Studio 2010 i Visual C ++ 2010 Express mają stdint.h. Można go znaleźć wC:\Program Files\Microsoft Visual Studio 10.0\VC\include


3
Jak również <cstdint> dla użytkowników C ++, którzy lubią to w std::.
Adrian McCarthy

23

Visual Studio 2003-2008 (Visual C ++ 7.1 - 9) nie twierdzi, że jest zgodny z C99. (Dzięki rdentato za komentarz.)



5

Microsoft nie obsługuje C99 i nie ogłosił żadnych planów. Uważam, że zamierzają śledzić standardy C ++, ale uważają C za faktycznie przestarzałe, z wyjątkiem podzbioru C ++.

Nowe projekty w programie Visual Studio 2003 i nowszych mają domyślnie ustawioną opcję „Kompiluj jako kod C ++ (/ TP)”, więc wszystkie pliki .c zostaną skompilowane jako C ++.


4

Inne przenośne rozwiązanie:

POSH: Przenośna uprząż Open Source

„POSH to prosta, przenośna, łatwa w użyciu, łatwa do integracji, elastyczna„ wiązka ”typu open source, zaprojektowana w celu znacznie mniej uciążliwego tworzenia i przenoszenia bibliotek i aplikacji międzyplatformowych.”

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

jak opisano i użyto w książce: Pisanie kodu przenośnego: wprowadzenie do tworzenia oprogramowania na wiele platform Autor: Brian Hook http://books.google.ca/books?id=4VOKcEAPPO0C

-Jason


1
Z artykułu Poshlib w Wikipedii, autoryzacja linku to: nazwa użytkownika: gość, hasło: gość123
JPaget

Całkowita suma 3 zatwierdzeń, ostatni z września 2006
AntoineL
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.