【问题标题】:Eclipse shows error, but project compiles and executesEclipse显示错误,但项目编译并执行
【发布时间】:2016-04-12 17:38:58
【问题描述】:

我在一个 Eclipse MARS C++ 项目中工作。即使 Eclipse 不断显示一些错误,以下代码也能完美编译和执行。

代码:

#include <iostream>
#include <ratio>
#include <chrono>

using namespace std;

int main()
{
    typedef std::chrono::duration<int> seconds_type;
    typedef std::chrono::duration<int,std::milli> milliseconds_type;
    typedef std::chrono::duration<int,std::ratio<60*60>> hours_type;

    hours_type h_oneday (24);
    seconds_type s_oneday (60*60*24);
    milliseconds_type ms_oneday (s_oneday);

    seconds_type s_onehour (60*60);
    hours_type h_onehour (std::chrono::duration_cast<hours_type>(s_onehour));
    milliseconds_type ms_onehour (s_onehour);

    std::cout << ms_onehour.count() << "ms in 1h" << std::endl;
}

错误:

  • 符号“持续时间”无法解析。
  • 无法解析类型“std::milli”。
  • 无法解析符号“比率”。
  • 符号“duration_cast”无法解析。
  • 无法解析方法“count”。
  • “std::endl”重载无效。

我认为所有错误都与包含有关。

构建时的信息:

Invoking: Cross G++ Compiler
g++ -D__GXX_EXPERIMENTAL_CXX0X__ -O0 -g3 -Wall -c -fmessage-length=0 -std=c++11 -MMD -MP -MF"src/Teste.d" -MT"src/Teste.o" -o "src/Teste.o" "../src/Teste.cpp"
Finished building: ../src/Teste.cpp

Building target: Teste
Invoking: Cross G++ Linker
g++  -o "Teste"  ./src/Teste.o   
Finished building target: Teste

我已经将-std=c++11 放在项目 > 属性 > C/C++ 构建 > 设置 > 杂项上。

我已经在 C/C++ GENERAL > PATHS AND SYMBOLS > SYMBOLS 上添加了__GXX_EXPERIMENTAL_CXX0X__

我已经清理并重建它,关闭并重新打开它(项目和 Eclipse),但没有任何反应。这是一个1文件的项目,Eclipse怎么能在里面找到8个错误仍然编译执行呢?我认为这只是编辑在惹我。谁能帮我摆脱这些错误?

【问题讨论】:

  • 您是否遇到了实际的编译器错误,或者它是否像其他 IDE 一样,其中行/变量以某种方式突出显示并告诉您它不喜欢什么?
  • 不是编译错误。这只是 IDE 抱怨这条线。
  • 如果你的常量变量不会改变,你应该在类型前加上const,就像const unsigned int hours_per_day = 24;一样。
  • 保持不变无关紧要。不过谢谢。

标签: c++ eclipse c++11


【解决方案1】:

不要相信 Eclipse、Visual Studio 或任何其他 IDE。他们用来在编辑器中为您提供“红色曲线”的解析器不是真正的编译器。它有不同的错误,具有不同级别的标准合规性,它很少时间来解析您的代码(因为它是交互式的)。 它给出错误的结果。

“编辑器内”解析器是不错、有用且方便的工具。但它们不是真正的编译器,不应将它们解释为有用的提示。

【讨论】:

  • 好的,谢谢您的建议。但是,就像我之前说的,我不担心我的代码是错误的。这显然是正确的。我正在寻找一种解决方案,让 IDE 理解代码的正确性。
猜你喜欢
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多