C++中双括号“[[foo()]]类型名称;”语法的含义是什么?

27
在关于避免伪共享的这篇文章中,介绍了以下用于对齐的代码片段:
// C++ (using C++0x alignment syntax)
template<typename T>
struct cache_line_storage {
   [[ align(CACHE_LINE_SIZE) ]] T data;
   char pad[ CACHE_LINE_SIZE > sizeof(T)
        ? CACHE_LINE_SIZE - sizeof(T)
        : 1 ];
};

第四行的意思是什么? 我以前从未见过这种双括号语法。
1个回答

32

这是 属性 说明符的语法。它被引入作为一种统一的语法来访问以前是编译器特定扩展(现在有些已标准化)。

在这种情况下,代码告诉编译器将data对齐到CACHE_LINE_SIZE字节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接