双括号"[[foo()]] type name;"语法在 C++ 中的含义?



在这篇关于避免虚假共享的文章中,提供了以下为对齐而剪切的代码:

// 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 ];
};

第4行是什么意思?我从来没见过这种双括号语法

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

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

最新更新