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

gee*_*owl 8 c++ linux gcc g++ std

我正在Linux上用C++开发一个程序.gcc版本是4.5.1 20100924.我想在我的程序中使用std :: atomic_int.我已经包含了原子头如下:

include <atomic>
Run Code Online (Sandbox Code Playgroud)

当我编译程序时,我得到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

如果我包含<cstdint>,我会得到相同的错误.我的系统上没有标头uchar.h和cuchar.h.如何解决编译错误?

先感谢您.

sta*_*ify 8

编辑:

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

  • @geekowl:几乎是一个咆哮:这个答案在一开始只给一些腐烂的鱼后给了一条鱼.另一个答案给出了鱼和一些关于如何捕鱼的信息.然而,另一个未被接受. (2认同)

Seb*_*ach 7

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

对于char16_tchar32_t,您不需要额外的包含.


g ++ howto:

类型g++ --version.如果它至少是4.4,那么它支持新的字符串文字.如果不是:您需要更新的编译器版本.

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