8

Linux上のC++でプログラムを開発しています。gccのバージョンは4.5.120100924です。プログラムでstd::atomic_intを使用したいと思います。私は以下のようにアトミックヘッダーを含めました:

include <atomic>

プログラムをコンパイルすると、以下のエラーが発生します。

In file included from /usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../include/c++/4.5.1/bits/atomic_base.h:87:0,
                 from /usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../include/c++/4.5.1/atomic:41,
                 from ../Source/Main.h:33:
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../include/c++/4.5.1/bits/atomicfwd_cxx.h:107:25: error: ‘char16_t’ was not declared in this scope
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../include/c++/4.5.1/bits/atomicfwd_cxx.h:107:33: error: template argument 1 is invalid
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../include/c++/4.5.1/bits/atomicfwd_cxx.h:107:53: error: invalid type in declaration before ‘;’ token
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../include/c++/4.5.1/bits/atomicfwd_cxx.h:110:25: error: ‘char32_t’ was not declared in this scope
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../include/c++/4.5.1/bits/atomicfwd_cxx.h:110:33: error: template argument 1 is invalid
/usr/lib/gcc/x86_64-redhat-linux/4.5.1/../../../../include/c++/4.5.1/bits/atomicfwd_cxx.h:110:53: error: invalid type in declaration before ‘;’ token

を含める<cstdint>と、同じエラーが発生します。ヘッダーuchar.hとcuchar.hが私のシステムにありません。コンパイルエラーを解決するにはどうすればよいですか?

前もって感謝します。

4

2 に答える 2

8

編集:

私はそれについて間違っていました。--std=c++0xg ++に渡すだけで、それで十分です。

于 2012-07-31T14:09:57.837 に答える
7

コンパイラでC++11サポートが有効になっていないか、これらの新しい型が宣言されていないコンパイラを使用しているようです。

char16_tおよびについてchar32_tは、追加のインクルードは必要ありません。


g ++ハウツー:

タイプg++ --version。4.4以上の場合、新しい文字列リテラルをサポートしています。そうでない場合:新しいバージョンのコンパイラが必要です。

--std=c++0x次に、または--std=c++11コンパイラに渡すようにしてください。

于 2012-07-31T14:13:40.753 に答える