繁体   English   中英

C ++错误:“ [”令牌之前的预期主表达式

[英]C++ error: expected primary-expression before ‘[’ token

现在,我尝试通过dklab安装RealPlexor,但是它会出现错误:

# bash ./Make.sh 
In file included from dklab_realplexor.cpp:68:
utils/misc.h: In function ‘void die(std::string)’:
utils/misc.h:105: error: expected primary-expression before ‘[’ token
compilation terminated due to -Wfatal-errors.

这是那条线

s = regex_replace(s, regex("\\$!"), [](smatch s) { return strerrno(); });

确保将以下标志传递给编译器(如g ++文档中所述 ):

-std=c++11

这告诉gcc编译器(g ++)使用C ++ 11语义编译您的代码。

您正在使用的lambda表达式语法(以[]开头的部分)是C ++ 11的功能,如果它出现在他们不希望成为C ++ 11的代码中,则会引起编译器极大的困惑。

但是,正如此处的另一条注释所指出的( 此表已确认,您正在运行的gcc版本(每条注释为4.4.5)不支持lambda表达式。可能必须使用函数对象而是升级到gcc / g ++的较新版本。

说啊

s = regex_replace(s, regex("\\$!"), *(smatch s) { return strerrno(); });

[]运算符通常用于索引某些内容(例如字符数组),因此C ++希望在其前面有内容

也可以尝试@DavidO的建议:

您使用的是Lambda表达式,该表达式是C ++ 11语法,但可能尚未将编译器设置为识别C ++ 11。 如果使用的是g ++,则应使用-std=c++11标志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM