alignof 运算符(C++11 起)
来自cppreference.com
查询类型的对齐要求。
语法
alignof( 类型标识 )
|
|||||||||
返回 std::size_t 类型的值。
解释
返回由类型标识所指示的类型的任何实例所要求的对齐字节数,该类型可以为完整对象类型、元素类型完整的数组类型或者到这些类型之一的引用类型。
若类型为引用类型,则运算符返回被引用类型的对齐;若类型为数组类型,则返回元素类型的对齐要求。
关键词
注解
有关 alignof
的返回值的含义和性质,参见对齐。
示例
运行此代码
#include <iostream> struct Foo { int i; float f; char c; }; // 注:下面的 `alignas(alignof(long double))` 如果需要可以简化为 // `alignas(long double)` struct alignas(alignof(long double)) Foo2 { // Foo2 成员的定义... }; struct Empty {}; struct alignas(64) Empty64 {}; int main() { std::cout << "对齐字节数" "\n" "- char :" << alignof(char) << "\n" "- 指针 :" << alignof(int*) << "\n" "- Foo 类 :" << alignof(Foo) << "\n" "- Foo2 类 :" << alignof(Foo2) << "\n" "- 空类 :" << alignof(Empty) << "\n" "- alignas(64) Empty:" << alignof(Empty64) << "\n"; }
可能的输出:
对齐字节数 - char :1 - 指针 :8 - Foo 类 :4 - Foo2 类 :16 - 空类 :1 - alignas(64) Empty:64
参阅
对齐要求 | 限制对象所能分配于其中的地址 |
alignas 说明符(C++11)
|
指定该变量的存储应该按指定量对齐 |
(C++11) |
获取类型的对齐要求 (类模板) |