双括号"[[foo()]]类型名称的含义;" c ++中的语法?

JMC*_*JMC 24 c++ syntax brackets

文章如何避免错误共享,剪断对准下面的代码是提出:

// 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 ];
};
Run Code Online (Sandbox Code Playgroud)

第4行是什么意思?我以前从未见过这种双括号语法.

Ale*_*íaz 28

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

在这种情况下,代码告诉编译器对齐data,以CACHE_LINE_SIZE字节为单位.