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
标志。
相关文章:
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- C++ 标记之前预期主表达式'('错误
- 正则表达式中带有卷轴大括号的正则表达式错误
- C++初学者错误:主要表达式错误
- 代数树表达式C++错误:未解析的外部符号"Public:_thiscall AlgebraicTreeExpression::~AlgebraicTreeExpression(void) ..."
- 使用多线程处理对象数组 - 无效使用 void 表达式错误
- 为什么 if constexpr 不会使这个核心常量表达式错误消失?
- 提升正则表达式错误:未初始化的提升::match_results
- C++比较表达式错误
- C++ "主表达式"错误
- C++ 正则表达式错误(未处理的异常)
- 'this'不能用于常量表达式错误 (C++)
- 代码块引发有关for_each的预期主表达式错误
- Boost Regex中的命名子表达式错误
- C++之前的主要表达式错误
- Ubuntu 上的正则表达式错误
- C++正则表达式错误
- 理解常量表达式错误
- 成员函数和预期的主表达式错误
- Xcode中应有表达式错误