2008-09-24 30 views
106

Tôi ngạc nhiên khi phát hiện ra rằng C99 stdint.h bị thiếu trong MS Visual Studio 2003 trở lên. Tôi chắc rằng họ có lý do của họ, nhưng có ai biết nơi tôi có thể tải xuống một bản sao không? Nếu không có tiêu đề này tôi không có định nghĩa với nhiều loại hữu ích như uint32_t vvTiêu đề C99 stdint.h và MS Visual Studio

+38

Cập nhật cho điều này: MSVC 2010 hiện bao gồm 'stdint.h' –

+3

Cũng như . –

+0

Đi theo blog này: http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx, * VS Xem trước 2015 hỗ trợ đầy đủ Thư viện Chuẩn C99 (với những thiếu sót duy nhất là tgmath.h, yêu cầu trình biên dịch C ma thuật và không liên quan đến C++ có quá tải và CX_LIMITED_RANGE/FP_CONTRACT cũng yêu cầu hỗ trợ trình biên dịch). * –

Trả lời

79

Hóa ra bạn có thể tải về một phiên bản MS của tiêu đề này từ:

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

Một một xách tay có thể được tìm thấy ở đây:

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

Nhờ blog Software Rambling s.

+11

Miền công cộng (không phải là giấy phép MIT/BSD - bạn thậm chí không cần giữ lại phân bổ bản quyền xung quanh) stdint.h cho MSVC (phiên bản được sửa đổi đôi chút từ MinGW): http: // snippet.com/view/18199/stdinth/ –

+0

Liên kết đầu tiên 404s –

+0

Đã sửa đổi câu trả lời gốc nhưng: https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h liên kết svn đã chết – smaudet

21

Visual Studio 2003 - 2008 (Visual C++ 7.1 - 9) không yêu cầu tương thích với C99. (Cảm ơn rdentato đã nhận xét của mình.)

44

Chỉ cần tự xác định chúng.

#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

Tôi có thiếu thứ gì đó hoặc không nên gõ typedef unsigned __int64 uint64_t; ? –

+0

@Roman A. Taycher: Đã chỉnh sửa để thay đổi '__int32' thành' __int64'. –

+20

Bạn có vẻ như, uh, thiếu một vài ... –

11

Boost chứa tập tin tiêu đề cstdint.hpp với các loại bạn đang tìm kiếm: http://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp

+1

tăng là C++, câu hỏi là trên C99 –

+4

Nó không phải là rõ ràng - anh ta hỏi về một tiêu đề C99 trong Visual Studio, mà không xác định ngôn ngữ mà ông đang sử dụng. Trong mọi trường hợp, nó không thể là C99 vì Microsoft không hỗ trợ nó. –

+0

OP muốn có một bản sao của ' ', không phải là tiêu đề Tăng cường. – jww

5

Microsoft không hỗ trợ C99 và chưa công bố bất kỳ kế hoạch. Tôi tin rằng họ có ý định theo dõi các tiêu chuẩn C++ nhưng xem xét C là lỗi thời hiệu quả ngoại trừ một tập con của C++.

Các dự án mới trong Visual Studio 2003 trở lên có tùy chọn "Biên dịch dưới dạng C++ (/ TP)" theo mặc định, vì vậy mọi tệp .c sẽ được biên dịch thành C++.

4

Một giải pháp di động:

POSH: Portable mã nguồn mở Harness

"Posh là một đơn giản, di động, dễ sử dụng, dễ tích hợp, linh hoạt, mã nguồn mở "khai thác" được thiết kế để làm cho việc viết các ứng dụng và thư viện đa nền tảng kém đáng kể hơn để tạo và cổng. "

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

như mô tả và được sử dụng trong cuốn sách: Viết mã di động: giới thiệu về phát triển phần mềm cho nhiều nền tảng By Brian Hook http://books.google.ca/books?id=4VOKcEAPPO0C

-Jason

+1

liên kết Ủy quyền Bắt buộc – CiNN

+1

Từ bài viết trên Wikipedia Poshlib, ủy quyền liên kết là: tên người dùng: khách, mật khẩu: guest123 – JPaget

+0

Tổng cộng 3 lần commit, ngày cuối cùng vào tháng 9 năm 2006 – AntoineL

43

Cập nhật: trực quan Studio 2010Visual C++ 2010 Express cả hai đều có stdint.h. Nó có thể được tìm thấy trong C:\Program Files\Microsoft Visual Studio 10.0\VC\include

+2

Cũng như cho người dùng C++ thích nó trong 'std :: '. –

Các vấn đề liên quan