2012-05-02 3 views
6

Я был удивлен тем, что включил stdint.h, но включил cstdint.Почему stdint.h можно найти, но cstdint нет?

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

Это то же самое с г ++:

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

Могу ли я спросить, почему? И, есть ли какой-либо метод для исправления этой проблемы, но обновление компилятора? Спасибо.

+0

Что отличает – slartibartfast

+0

Где берет 'cstdint'? – Gabe

+0

В gcc 4.2.3 вы можете найти '' под tr1 '' –

ответ

5

Ваш компилятор поддерживает старый стандарт C++, который не имеет <cstdint> (поскольку C90 не имеет <stdint.h>). <cstdint> является новым для C++ 11.

+1

О, я вижу, спасибо. Но теперь вопрос: почему c99 поддерживает stdint.h, но C++ 03 доза не поддерживает cstdint? – van

+2

@van: Это так. Версия стандарта C, на которую ссылается C++ 03 (потому что это всего лишь небольшое обновление для C++ 98), была/была C90. –

+0

@ Чарльз Бейли прав. Последний gcc (4.6.3) на моей машине имеет экспериментальную поддержку для C++ 0x и предупреждает «#error» Этот файл требует поддержки компилятора и библиотеки для предстоящего стандарта ISO C++, C++ 0x. В настоящее время эта поддержка является экспериментальной и должна с параметрами -std = C++ 0x или -std = gnu ++ 0x. " – useratuniv

 Смежные вопросы

  • Нет связанных вопросов^_^