双括号“[[foo()]] type name;”的含义C ++中的语法?
Meaning of double bracket "[[foo()]] type name;" syntax in c++?
在关于避免虚假共享的this文章中,为对齐而截取了以下代码:
// 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行是什么意思?
我以前从未见过这种双括号语法。
即attribute说明符语法。它是作为一种统一语法引入的,用于访问以前特定于编译器的扩展(现在有些已标准化)。
在这种情况下,代码告诉编译器将 data
对齐到 CACHE_LINE_SIZE
字节。
在关于避免虚假共享的this文章中,为对齐而截取了以下代码:
// 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行是什么意思? 我以前从未见过这种双括号语法。
即attribute说明符语法。它是作为一种统一语法引入的,用于访问以前特定于编译器的扩展(现在有些已标准化)。
在这种情况下,代码告诉编译器将 data
对齐到 CACHE_LINE_SIZE
字节。