一、 C++ 98及以前
二、 C++ 11
1. alignof
a. 简介: 是一个运算符,用于确定类型的对齐要求。
b.语法:
i. alignof(type_id/object)
c. 返回值:
i. std::size_t // 返回指定类型或对象在内存中的对齐边界,即该类型或对象所需的最小字节对齐。 它返回的是类型所需的对齐字节数,通常是一个2的幂次
d. 进阶:
i. 输入参数为 complete object type,返回该类型所需的最小字节对齐数,单位为byte,通常为一个2的幂次
ii. 输入参数为 以 complete object type为元素的数组,返回数组元素所属类型所需的最小字节对齐数
ii. 输入参数为 complete object type 的引用,返回被引用的complete object type 所需的最小字节对齐数
e. 示例:
1 int main() 2 { 3 std::cout << "Alignment of" "\n" 4 "- char : " << alignof(char) << "\n" 5 "- int : " << alignof(int) << "\n" 6 "- pointer : " << alignof(int*) << "\n" 7 "- short : " << alignof(short) << "\n" 8 "- double : " << alignof(double) << "\n" 9 "- array<int> : " << alignof(array<int,10>) << "\n" 10 "- set<int> : " << alignof(set<int>) << "\n" 11 "- list<int> : " << alignof(list<int>) << "\n" 12 "- map<int,int> :" << alignof(map<int, int>) << "\n" 13 "- vector<int> :" << alignof(vector<int>) << "\n" 14 "- queue<int> :" << alignof(queue<int>) << "\n" 15 "- tuple<double,int,int> : " << alignof(tuple<double, int, int>) << "\n" 16 "- tuple<char,char,char> : " << alignof(tuple<char, char, char>) << "\n"; 17 18 return 1; 19 }View Code
2. alignas
a. 简介:
指定某个类型或某个对象的内存对齐方式
b. 语法:
i. alignas(expression) // expression 必须为一个整型常量表达式,且表达式的结果须为 0,或者为其他对 “对齐“ 或 “扩展对齐“ 有效的值
ii. alignas(type-id) //
iii. alignas(pack...)
三、 C++ 17
四、 C++ 20
五、C++ 23
标签:complete,object,C++,alignas,keywords,对齐,type From: https://www.cnblogs.com/newbird2021/p/18179018