如何检查类型指针是否与该类型正确对齐?

sha*_*oth 2 c++ alignment

假设我有一个模板函数,用于处理指向未知类型的指针T。现在,如果类型T碰巧void*在 64 位平台上,那么它必须是 8 字节对齐,但如果T碰巧是,char它必须是 1 字节对齐,如果T碰巧是一个类,那么它的对齐要求将取决于其成员变量。

这一切都可以在纸上计算,但如何使编译器产生给定类型的对齐要求T

有没有办法在编译时找到给定类型的对齐要求?

小智 5

在C++11中,您可以使用alignofalignas来进行断言并提供对齐要求。另请参阅std::align以控制运行时的对齐方式。