C99 stdint.h header dan MS Visual Studio


113

Yang mengejutkan saya, saya baru saja menemukan bahwa C99 stdint.h hilang dari MS Visual Studio 2003 ke atas. Saya yakin mereka punya alasannya sendiri, tetapi adakah yang tahu di mana saya dapat mengunduh salinannya? Tanpa tajuk ini saya tidak memiliki definisi untuk jenis yang berguna seperti uint32_t, dll.


41
Sebagai pembaruan untuk ini: MSVC 2010 sekarang mencakupstdint.h
Michael Burr

Pergi oleh blog ini: blogs.msdn.com/b/vcblog/archive/2014/11/17/… , VS 2015 Preview sepenuhnya mendukung C99 Standard Library (dengan satu-satunya kelalaian tgmath.h, yang memerlukan sihir penyusun C dan tidak relevan dengan C ++ yang kelebihan beban, dan CX_LIMITED_RANGE / FP_CONTRACT yang juga membutuhkan dukungan kompilator).
gagak vulcan

Jawaban:


82

Ternyata Anda dapat mengunduh versi MS dari header ini dari:

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

Yang portabel dapat ditemukan di sini:

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

Berkat blog Software Rambling .


13
Domain publik (bukan lisensi MIT / BSD - Anda bahkan tidak perlu menyimpan atribusi hak cipta di sekitar) stdint.h untuk MSVC (versi yang sedikit dimodifikasi dari MinGW): snipplr.com/view/18199/stdinth
Michael Burr

Tautan pertama 404
Matthew Moisen


46

Definisikan saja sendiri.

#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
Apakah saya melewatkan sesuatu atau tidak seharusnya mengetikef unsigned __int64 uint64_t; ?
Roman A. Taycher

1
Dan untuk menggunakan nilai uint64_t literal, ini berguna untuk #define U64(u) (u##ui64)Windows dan #define U64(u) (u##ULL)sebaliknya.
Niklas

45

Pembaruan: Visual Studio 2010 dan Visual C ++ 2010 Express keduanya memiliki stdint.h. Itu dapat ditemukan diC:\Program Files\Microsoft Visual Studio 10.0\VC\include


3
Serta <cstdint> untuk pengguna C ++ yang menyukainya std::.
Adrian McCarthy

23

Visual Studio 2003 - 2008 (Visual C ++ 7.1 - 9) tidak mengklaim kompatibel dengan C99. (Terima kasih kepada rdentato atas komentarnya.)



5

Microsoft tidak mendukung C99 dan belum mengumumkan rencana apa pun untuk itu. Saya yakin mereka bermaksud untuk melacak standar C ++ tetapi menganggap C sudah usang secara efektif kecuali sebagai bagian dari C ++.

Proyek baru di Visual Studio 2003 dan yang lebih baru memiliki opsi "Compile as C ++ Code (/ TP)" yang ditetapkan secara default, sehingga file .c apa pun akan dikompilasi sebagai C ++.


4

Solusi portabel lainnya:

POSH: Portable Open Source Harness

"POSH adalah" harness "sumber terbuka yang sederhana, portabel, mudah digunakan, mudah diintegrasikan, fleksibel, dan bersumber terbuka yang dirancang untuk membuat penulisan pustaka dan aplikasi lintas platform tidak terlalu membosankan untuk dibuat dan dipindahkan."

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

seperti yang dijelaskan dan digunakan dalam buku: Menulis kode portabel: pengantar pengembangan perangkat lunak untuk berbagai platform Oleh Brian Hook http://books.google.ca/books?id=4VOKcEAPPO0C

-Jason


1
Dari artikel Wikipedia Poshlib, otorisasi tautannya adalah: nama pengguna: tamu, kata sandi: guest123
JPaget

Total keseluruhan 3 komitmen, yang terakhir tanggal September 2006
AntoineL
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.