2012-05-02 18 views
6

Tôi được ngạc nhiên với điều đó bao gồm stdint.h hoạt động nhưng bao gồm cstdint không.Tại sao stdint.h có thể được tìm thấy nhưng cstdint thì không?

$ aCC sizeof.cpp 
"sizeof.cpp", line 5: error #2005-D: could not open source file "cstdint" 
    #include <cstdint> 
        ^

1 error detected in the compilation of "sizeof.cpp". 
$ aCC --version 
aCC: HP C/aC++ B3910B A.06.12 [Nov 03 2006] 

Đó là cùng với g ++:

$ g++ --version 
g++ (GCC) 4.2.3 

Tôi có thể hỏi tại sao? Và, có bất kỳ phương pháp để khắc phục vấn đề này nhưng cập nhật trình biên dịch? Cảm ơn bạn.

+0

Sự khác biệt là gì – slartibartfast

+0

'cstdint' xuất phát từ đâu? – Gabe

+0

Trong gcc 4.2.3, bạn có thể tìm thấy '' dưới tr1 '' –

Trả lời

5

Trình biên dịch của bạn hỗ trợ chuẩn C++ cũ không có <cstdint> (vì C90 không có <stdint.h>). <cstdint> là mới đối với C++ 11.

+1

Ồ, tôi hiểu, cảm ơn. Nhưng bây giờ, câu hỏi là: tại sao c99 hỗ trợ stdint.h nhưng C++ 03 liều không hỗ trợ cstdint? – van

+2

@van: Đó chỉ là con đường của nó. Phiên bản của tiêu chuẩn C được tham chiếu bởi C++ 03 (vì nó chỉ là bản cập nhật nhỏ cho C++ 98) là/vẫn là C90. –

+0

@Charles Bailey là đúng. Gcc mới nhất (4.6.3) trên máy của tôi có hỗ trợ thử nghiệm cho C++ 0x và cảnh báo "#error Tệp này yêu cầu hỗ trợ trình biên dịch và thư viện cho tiêu chuẩn ISO C++ sắp tới, C++ 0x. Hỗ trợ này hiện đang thử nghiệm và phải được bật với tùy chọn trình biên dịch -std = C++ 0x hoặc -std = gnu ++ 0x. " – useratuniv

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