2012-05-02 20 views
6

Jestem zaskoczony tym, że obejmują stdint.h działa, ale nie cstdint.Dlaczego stdint.h można znaleźć, ale cstdint nie?

$ 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] 

To samo z g ++:

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

Mogę zapytać dlaczego? I czy istnieje jakaś metoda rozwiązania tego problemu, ale aktualizacja kompilatora? Dziękuję.

+0

Czym się różni – slartibartfast

+0

Skąd pochodzi "cstdint"? – Gabe

+0

W gcc 4.2.3, możesz znaleźć '' pod tr1 '' –

Odpowiedz

5

Twój kompilator obsługuje stary standard C++, który nie ma <cstdint> (jak C90 nie miał <stdint.h>). <cstdint> jest nowością w C++ 11.

+1

Och, rozumiem, dziękuję. Ale teraz pytanie brzmi: dlaczego c99 obsługuje stdint.h, ale C++ 03 dawka nie obsługuje cstdint? – van

+2

@van: Tak to już jest. Wersja standardu C, do którego odnosi się C++ 03 (ponieważ jest to tylko niewielka aktualizacja do C++ 98) jest/wciąż była C90. –

+0

@Charles Bailey ma rację. Najnowsza wersja gcc (4.6.3) na moim komputerze ma eksperymentalną obsługę C++ 0x i ostrzega: "#error Ten plik wymaga obsługi kompilatora i biblioteki dla nadchodzącego standardu ISO C++, C++ 0x. Ta obsługa jest obecnie eksperymentalna i musi być włączone przy opcjach kompilatora -std = C++ 0x lub -std = gnu ++ 0x. " – useratuniv

Powiązane problemy