问题描述
我想要关注 regex在C ++ 11。当我尝试编译小代码示例时,我得到这些错误
I'm trying to follow this tutorial about regex in C++11. When I try to compile the little code example I get these errors
clang++ -std=c++0x test.cpp -o test
In file included from test.cpp:3:
In file included from /usr/include/c++/4.6/regex:55:
/usr/include/c++/4.6/bits/regex_constants.h:196:36: error: constexpr variable
'match_default' must be initialized by a constant expression
static constexpr match_flag_type match_default = 0;
^~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:203:36: error: constexpr variable
'match_not_bol' must be initialized by a constant expression
static constexpr match_flag_type match_not_bol = 1 << _S_not_bol;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:210:36: error: constexpr variable
'match_not_eol' must be initialized by a constant expression
static constexpr match_flag_type match_not_eol = 1 << _S_not_eol;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:216:36: error: constexpr variable
'match_not_bow' must be initialized by a constant expression
static constexpr match_flag_type match_not_bow = 1 << _S_not_bow;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:222:36: error: constexpr variable
'match_not_eow' must be initialized by a constant expression
static constexpr match_flag_type match_not_eow = 1 << _S_not_eow;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:228:36: error: constexpr variable
'match_any' must be initialized by a constant expression
static constexpr match_flag_type match_any = 1 << _S_any;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:233:36: error: constexpr variable
'match_not_null' must be initialized by a constant expression
static constexpr match_flag_type match_not_null = 1 << _S_not_null;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:238:36: error: constexpr variable
'match_continuous' must be initialized by a constant expression
static constexpr match_flag_type match_continuous = 1 << _S_continuous;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:245:36: error: constexpr variable
'match_prev_avail' must be initialized by a constant expression
static constexpr match_flag_type match_prev_avail = 1 << _S_prev_avail;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:273:36: error: constexpr variable
'format_default' must be initialized by a constant expression
static constexpr match_flag_type format_default = 0;
^~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:281:36: error: constexpr variable
'format_sed' must be initialized by a constant expression
static constexpr match_flag_type format_sed = 1 << _S_sed;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:288:36: error: constexpr variable
'format_no_copy' must be initialized by a constant expression
static constexpr match_flag_type format_no_copy = 1 << _S_no_copy;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/4.6/bits/regex_constants.h:294:36: error: constexpr variable
'format_first_only' must be initialized by a constant expression
static constexpr match_flag_type format_first_only = 1 << _S_first_only;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
13 errors generated.
有什么问题?
推荐答案
默认情况下,clang使用gcc的标准C ++库 - libstdc ++。它仍然不支持正则表达式。你可以尝试使用libc ++ - 另一个支持所有C ++ 11的标准库实现。 clang ++ -stdlib = libc ++ source.cpp -o source
在我的教程第一个示例代码中非常适用。
By default clang uses gcc's standard C++ library - libstdc++. It still does not support regular expressions. You can try using libc++ - another standard library implementation which supports all of C++11. clang++ -stdlib=libc++ source.cpp -o source
works perfectly for me with the first example code from the tutorial.
但是,将libc ++和libstdc ++库/可执行文件连接在一起并不是一个好主意 - 它们是不兼容的。
However it's not a good idea to link libc++ and libstdc++ libraries/executables together - they are incompatible.
这篇关于尝试在Linux上使用Clang ++编译c ++ 11 regex教程时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!