Eclipse 对于 g++ 的代码返回错误没有

发布于 2024-12-03 14:53:08 字数 5408 浏览 0 评论 0原文

构建简单的代码(示例如下)在 eclipse 上返回错误,而命令行中的 g++ 不会返回错误。 eclipse 和 g++ 都输出可执行文件,其行为相同(结果符合我的期望)。当代码不像我所展示的示例那样简单时,这会很痛苦。任何想法表示赞赏。

环境:Eclipse Indigo CDT,Ubuntu 10.10

示例代码:

//For test_boostStr()
#include <boost/algorithm/string.hpp>
#include <vector>
#include <iostream>

//For test_boost_foreach()
#include <boost/algorithm/string/trim.hpp>
#include <boost/foreach.hpp>

void test_boostStr() {
    std::vector<std::string> strs;
    boost::split(strs, "string to split", boost::is_any_of("\t "));
    std::cout << strs.size() << std::endl;
    //  std::cout << strs.at(1) << std::endl;
}

void test_boost_foreach() {
    //std::vector<std::string> namespaces_;
    std::string namespaces_  = " tele op eration. ";
    std::cout << "managing namespaces: ";
    std::string out;
    std::string s;
    BOOST_FOREACH(s, namespaces_)
    {
        boost::trim(s);
        out += s + " ";
    }
    std::cout << out.substr(0, out.size() - 1) << std::endl;
}

int main(void) {
    test_boost_foreach();
}

运行 exec 的结果:

 t e l e  o p  e r a t i o n . 

Eclipse 上“问题”选项卡中的构建结果:

Description Resource    Path    Location    Type
Invalid arguments '
Candidates are:
boost::mpl::not_<#0> * not_(#0 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::mpl::not_<#0> * not_(#0 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::mpl::not_<#0> * not_(#0 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> end(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<0> *)
boost::foreach_detail_::auto_any<int> end(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0 *,#1> *, mpl_::bool_<1> *)
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> end(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<1> *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> begin(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<0> *)
boost::foreach_detail_::auto_any<#0 *> begin(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0 *,#1> *, mpl_::bool_<1> *)
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> begin(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<1> *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::foreach_detail_::auto_any<#0 *> contain(#0 &, mpl_::bool_<0> *)
boost::foreach_detail_::auto_any<#0> contain(const #0 &, mpl_::bool_<1> *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::algorithm::detail::is_any_ofF<boost::range_value<#0>::type> is_any_of(const #0 &)
'   Prove.cpp   /ProvingGround  line 12 Semantic Error
Invalid arguments '
Candidates are:
#0 & split(#0 &, #1 &, #2, enum boost::algorithm::token_compress_mode_type)
'   Prove.cpp   /ProvingGround  line 12 Semantic Error
Invalid arguments '
Candidates are:
? * or_(#0 *, #1 *, #2 *)
? * or_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * or_(#0 *, #1 *, #2 *)
? * or_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * or_(#0 *, #1 *, #2 *)
? * or_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * is_array_(const #0 &)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * is_array_(const #0 &)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * is_array_(const #0 &)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error

Building simple code (example is below) returns error on eclipse, while g++ from commandline doesn't. Both eclipse and g++ output executable that act the same (and the result meets my expectation). This is painful when the code isn't simple like the example I'm showing. Any idea is appreciated.

Env: Eclipse Indigo CDT, Ubuntu 10.10

Sample code:

//For test_boostStr()
#include <boost/algorithm/string.hpp>
#include <vector>
#include <iostream>

//For test_boost_foreach()
#include <boost/algorithm/string/trim.hpp>
#include <boost/foreach.hpp>

void test_boostStr() {
    std::vector<std::string> strs;
    boost::split(strs, "string to split", boost::is_any_of("\t "));
    std::cout << strs.size() << std::endl;
    //  std::cout << strs.at(1) << std::endl;
}

void test_boost_foreach() {
    //std::vector<std::string> namespaces_;
    std::string namespaces_  = " tele op eration. ";
    std::cout << "managing namespaces: ";
    std::string out;
    std::string s;
    BOOST_FOREACH(s, namespaces_)
    {
        boost::trim(s);
        out += s + " ";
    }
    std::cout << out.substr(0, out.size() - 1) << std::endl;
}

int main(void) {
    test_boost_foreach();
}

Result of running the exec :

 t e l e  o p  e r a t i o n . 

Build result in the 'Problem' tab on Eclipse:

Description Resource    Path    Location    Type
Invalid arguments '
Candidates are:
boost::mpl::not_<#0> * not_(#0 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::mpl::not_<#0> * not_(#0 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::mpl::not_<#0> * not_(#0 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> end(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<0> *)
boost::foreach_detail_::auto_any<int> end(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0 *,#1> *, mpl_::bool_<1> *)
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> end(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<1> *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> begin(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<0> *)
boost::foreach_detail_::auto_any<#0 *> begin(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0 *,#1> *, mpl_::bool_<1> *)
boost::foreach_detail_::auto_any<boost::foreach_detail_::foreach_iterator<#0,#1>::type> begin(const boost::foreach_detail_::auto_any_base &, boost::foreach_detail_::type2type<#0,#1> *, mpl_::bool_<1> *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::foreach_detail_::auto_any<#0 *> contain(#0 &, mpl_::bool_<0> *)
boost::foreach_detail_::auto_any<#0> contain(const #0 &, mpl_::bool_<1> *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
boost::algorithm::detail::is_any_ofF<boost::range_value<#0>::type> is_any_of(const #0 &)
'   Prove.cpp   /ProvingGround  line 12 Semantic Error
Invalid arguments '
Candidates are:
#0 & split(#0 &, #1 &, #2, enum boost::algorithm::token_compress_mode_type)
'   Prove.cpp   /ProvingGround  line 12 Semantic Error
Invalid arguments '
Candidates are:
? * or_(#0 *, #1 *, #2 *)
? * or_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * or_(#0 *, #1 *, #2 *)
? * or_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * or_(#0 *, #1 *, #2 *)
? * or_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * is_array_(const #0 &)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * is_array_(const #0 &)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * is_array_(const #0 &)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error
Invalid arguments '
Candidates are:
? * and_(#0 *, #1 *, #2 *)
? * and_(#0 *, #1 *)
'   Prove.cpp   /ProvingGround  line 23 Semantic Error

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情未る 2024-12-10 14:53:08

我还没有解决这个问题(似乎经常发生,特别是当我使用 boost 时),但根本原因可能在于 Eclipse 的 CDT 插件,根据 此线程。正如页面中所讨论的,残酷的解决方法是关闭代码分析功能。

I haven't solved this issue (happens a lot particularly when I use boost it seems), but the root cause may lie in Eclipse' CDT plug-in according to this thread. Brutal workaround is, as discussed in the page, to turn off code analysis feature.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文