得到错误'char16_t和char32_t未声明'

时间:2012-07-31 14:04:32

标签: c++ linux gcc g++ std

我正在Linux上用C ++开发一个程序。 gcc版本是4.5.1 20100924.我想在我的程序中使用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。如何解决编译错误?

提前谢谢。

2 个答案:

答案 0 :(得分:8)

<强>编辑:

我错了。只需将--std=c++0x传递给g ++,就可以了。

答案 1 :(得分:7)

您似乎没有在编译器中启用C ++ 11支持,或者您使用的是未声明这些新类型的编译器。

对于char16_tchar32_t,您无需额外包含。


g ++ howto:

输入g++ --version。如果它至少为4.4,那么它支持new string literals。如果不是:您需要更新的编译器版本。

然后,确保将--std=c++0x--std=c++11传递给编译器。