2012-05-02 41 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 ++と同じです:

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

は私がなぜ聞いても?そして、この問題を修正してコンパイラを更新する方法はありますか? ありがとうございます。

+0

相違点 – slartibartfast

+0

'cstdint 'はどこから来たのですか? – Gabe

+0

gcc 4.2.3では、tr1「」の下に「」と表示されます。 –

答えて

5

コンパイラは、<cstdint>(C90には<stdint.h>がないため)がない古いC++標準をサポートしています。 <cstdint>はC++ 11の新機能です。

+1

ありがとうございます。しかし今、問題は、なぜc99がstdint.hをサポートするのですが、C++ 03はcstdintをサポートしないのですか? – van

+2

@van:これはまさにそれです。 C++ 03が参照しているC標準のバージョン(C++ 98のマイナーな更新版なので)はまだC90です。 –

+0

@Charles Baileyが正しいです。私のマシン上の最新のgcc(4.6.3)はC++ 0xを実験的にサポートしています。 "#errorこのファイルは今後のISO C++標準であるC++ 0xのコンパイラとライブラリのサポートが必要です。 -std = C++ 0xまたは-std = gnu ++ 0xコンパイラオプションで有効にすることができます。 – useratuniv

関連する問題