C++ “双括号”的含义;[[foo()]]类型名称&引用;c++;?
在关于避免错误共享的文章中,介绍了为对齐而截取的以下代码:C++ “双括号”的含义;[[foo()]]类型名称&引用;c++;?,c++,syntax,brackets,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)
// 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 ];
};
<代码> /C++(使用C++ 0x对齐语法)
模板
结构缓存线存储{
[[align(缓存线大小)]T数据;
字符填充[缓存线大小>大小(T)
缓存线大小-大小(T)
: 1 ];
};
第四行是什么意思?
我以前从未见过这种双括号语法。这是说明符语法。它是作为一种统一语法引入的,用于访问以前特定于编译器的扩展(现在有些扩展已标准化)
在这种情况下,代码告诉编译器将数据
与缓存线大小
字节对齐。这是说明符语法。它是作为一种统一语法引入的,用于访问以前特定于编译器的扩展(现在有些扩展已标准化)
在这种情况下,代码告诉编译器将数据
与缓存线大小
字节对齐