Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::移动ecplise中的无效参数_C++_Eclipse_C++11 - Fatal编程技术网

C++ std::移动ecplise中的无效参数

C++ std::移动ecplise中的无效参数,c++,eclipse,c++11,C++,Eclipse,C++11,我正在用这个简单的例子测试std::move 但是当我试图编译这段代码时,出现了错误 #include <utility> // std::move #include <iostream> // std::cout #include <vector> // std::vector #include <string> // std::string int main () { std::string fo

我正在用这个简单的例子测试std::move

但是当我试图编译这段代码时,出现了错误

#include <utility>      // std::move
#include <iostream>     // std::cout
#include <vector>       // std::vector
#include <string>       // std::string

int main () {
  std::string foo = "foo-string";
  std::string bar = "bar-string";
  std::vector<std::string> myvector;

  myvector.push_back (foo);                    // copies
  myvector.push_back (std::move(bar));         // moves

  std::cout << "myvector contains:";
  for (std::string& x:myvector) std::cout << ' ' << x;
  std::cout << '\n';

  return 0;
}

这是成功和有效的

eclipse有什么问题


我使用的是eclipse版本3.8

我猜eclipse调用的
gcc
没有收到
-std=c++11
参数。如果您有现代CDT,请查看此页面:如果没有,请按照@JoshKelley的建议执行

您从Eclipse CDT的代码分析中得到错误,而不是从编译器中得到错误。代码分析可能是有用的,但是它可以很好地设置,并且因为它涉及Eclipse做它自己的(有限)C++解析,它并不总是与真正的编译器一致。(类型列中的“语义错误”是一个代码分析错误。实际的编译器错误列为“C/C++错误”。)

代码分析错误是无害的——正如您所看到的,它们不会影响编译。为了使代码分析工作正常,Eclipse进行“发现”——它调用GCC本身并解析输出以确定诸如预处理器定义、包含路径等内容。当Eclipse进行发现时,很可能没有启用C++11。修复它在某种程度上取决于您的系统和Eclipse版本;下面是我如何修复它的:

  • 进入Windows、首选项、C/C++、构建、设置下
  • 在发现选项卡下,选择“CDT GCC内置编译器设置[共享]”
  • -std=c++11
    添加到“获取编译器规范的命令”的末尾
  • 单击应用。单击“确定”
  • 在此之后,您可能需要重新编制索引;见下文
  • 在最新的Eclipse中,如果让Eclipse管理C++设置,而不是编写自己的MaCo文件,那么,可以使用手动编辑编译器设置来代替。 这里有一些其他的东西可以尝试

    • 确保您正在运行最新的Eclipse和Eclipse CDT。C++11并没有那么旧,EclipseCDT每年都会有重大的更新,尤其是代码分析非常复杂,需要能够找到的最新代码
    • 它有时有助于重新编制索引:右键单击项目,转到“索引”下,然后选择“重建”。如果此操作不起作用,则可以重新编制索引

    你的意思是eclipse的内部解析器(相当于IntelisSense for Visual)显示错误,而普通编译器不显示错误吗?是的,我认为toolchains选项似乎只适用于eclipse管理的项目;至少,我一直无法让它为makefile项目工作。听起来很合理。如果Makefile存在,那么所有的工具链操作都应该在那里执行。
    g++ -D__GXX_EXPERIMENTAL_CXX0X__ -std=c++11 test.cpp