【发布时间】: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;一样。 -
保持不变无关紧要。不过谢谢。