我面临很多说Symbol 'array' could not be resolved
,代码正在建设中。
#include <math.h>
#include <array>
#include <sstream>
#include <string>
static std::string printArray(std::array<double, 3> data) {
std::ostringstream strs;
strs << "( " << data[0] << " " << data[1] << " " << data[2] << " )";
return strs.str();
}
static std::string printVector(std::vector<double> data) {
std::ostringstream strs;
strs << "( " ;
for (const auto & value : data )
strs << value << " ";
strs << " )";
return strs.str();
}
使用-std=c++11
下的C/C++ General -> Preposcessor Include Path, Macros etc. -> Porvides -> CDT GCC Built-in Compiler Settings
标记激活了c ++ 11功能,如here或here所述。
我的问题没有重复,因为它适用于std::vector
,并且正确处理了其他c ++ 11功能。
按F3即可解析标题(#include <array>
)。
我正在使用Eclipse CDT版本:Neon.3 Release(4.6.3)。
答案 0 :(得分:0)
问题是符号__cplusplus
的值不是201103L。
要更改此设置,您需要
修改Project->Preferences->C/C++ General/C/C+ General->Paths and Symbols->GNU C++->Symbols
添加定义__cplusplus
并将值设置为201103L
setzen。
在Window->Preferences->C/C++/Build/Settings/Discovery/CDT GCC Build-in Compiler Settings
das Argument下添加“-std = c ++ 11”der命令行hinzufügen
在所有条目的Project->Preferences->C/C++ General/C/C++ General/Path and Symbols->Providers
下激活复选框Use global provider shared between projects
答案 1 :(得分:0)
我有OP报告的完全相同的症状:
#include <array>
,F3成功导航到阵列头文件。我尝试了schorsch312提供的解决方案,并且可行,除了提供的步骤与我的Eclipse的Neon版本(与OP使用的版本相同)不完全一致。因此,我不得不稍微调整说明。这是对我有用的东西:
选择项目-> C / C +索引->重建-如果该操作未自动触发。
现在,eclipse可以正确解析对数组的引用。请注意,此解决方案假定您以前已解决了使c ++ 11语法正常工作的普遍问题。