我想测试一下alignas()的用法,所以我写下了这些代码:
#include <vector>
using namespace std;
template<typename X>
void user(const vector<X>& vx)
{
constexpr int bufmax = 1024;
alignas(X) buffer[bufmax];
const int max = min(vx.size(), bufmax / sizeof(X));
uninitialized_copy(vx.begin(), vx.begin()+max, buffer);
}然而,当我用g++编译它时,编译器输出了一个错误:“alignas(X)之前期望的主表达式”。谁能解释这一点?我不知道alignas()的确切用法。
发布于 2017-03-15 12:53:43
alignas(X)是一个对齐说明符,应用于类型。您的错误发生是因为您没有在此处指定类型。
从其余代码可以看出,您可能需要创建字符的对齐缓冲区:alignas(X) char buffer[bufmax];
发布于 2017-12-26 21:15:51
将以下数据类型添加到代码中
char alignas(X) buffer[bufmax];
alignas(X) char buffer[bufmax];我在读这本书的时候也碰到了同样的问题。
https://stackoverflow.com/questions/42801118
复制相似问题