【发布时间】:2021-07-23 19:40:51
【问题描述】:
我有 Boost 解析器使用的这两个迭代器:
std::string equationToParse = "some_text";
std::string::const_iterator iter = equationToParse.begin();
std::string::const_iterator end = equationToParse.end();
然后,如果解析器失败,我会使用它来打印它可以解析的点:
std::string rest(iter, end);
std::cout << "Stopped at: \" " << rest << "\"\n";
这在不同的机器上对我有用,但现在我无法在新机器上编译,因为这个错误:
error: macro "rest" passed 2 arguments, but takes just 1: std::string rest(iter, end);
可能是变量名有冲突?我想这可能是因为旧的 C++ 版本(我遇到这个问题的机器的 g++ 版本是 g++ (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0)但是 C++ 参考表示 std::string 的范围构造运算符自 C++98 以来就存在,所以我不确定会发生什么。
有什么想法吗?谢谢
【问题讨论】:
-
我们可以得到minimal reproducible example 吗?听起来您可能定义了一个名为
rest的宏,这会导致您的问题。