【发布时间】:2013-09-28 04:30:09
【问题描述】:
使用Eclipse配合MinGW(version:4.8.1)编译如下代码片段可以通过,但Eclipse仍然报错: “此行有多个标记 - 无法解析类型 'alignas'”
template<typename X> void set_aside(std::vector<X> vx) {
constexpr int max_buf = 1024;
alignas(X) X buffer[max_buf];
int max = min(vx.size(), max_buf / sizeof(X));
std::uninitialized_copy(vx.begin(), vx.begin() + max, buffer);
}
这个问题发生了什么,虽然代码片段通过了编译,但 Eclipse 标记为错误。 有人遇到过这个问题吗?请帮我解决这个问题,非常感谢!
【问题讨论】:
-
尝试在声明中将
alignas(X)移动到X之后,我记得它有一个特定的顺序。 -
虽然 ISO IEC 14882-2011 规范给出了上述代码片段的定义。以下是该规范的示例:alignas(T) T buffer[N]
-
如果在 X 之后移动 alignas(X),编译器会报错“警告:属性忽略 [-Wattributes] X alignas(X) buffer[max_buf];”
-
我猜 Eclipse 解析器不是最新的 C++11。如果您的 IDE 在编译器接受的内容上出错,请忽略 IDE。
-
最新的 Eclipse Kepler 对静态语法检查有更好的 C++11 支持。
标签: c++ c++11 eclipse-cdt alignas