繁体   English   中英

`alignas(X)` 之前需要主表达式吗?

[英]Expected primary-expression before `alignas(X)`?

我想测试一下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()的确切用法。

alignas(X)是一个对齐说明符,应用于类型。 您的错误发生是因为您没有在此处指定类型。

从其余的代码来看,您可能想要创建对齐的字符缓冲区: alignas(X) char buffer[bufmax];

将以下数据类型添加到您的代码中

char alignas(X) buffer[bufmax];

alignas(X) char buffer[bufmax];

我在看书时也遇到了同样的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM