【发布时间】:2012-10-26 08:03:17
【问题描述】:
假设我有一个模板函数来处理指向未知类型T 的指针。现在如果类型 T 在 64 位平台上恰好是 void* 则它必须是 8 字节对齐的,但如果 T 恰好是 char 它必须是 1 字节对齐并且如果 T 发生要成为一个类,那么它的对齐要求将取决于它的成员变量。
这一切都可以在纸上计算,但我如何让编译器产生给定类型T 的对齐要求?
有没有办法在编译时找到给定类型的对齐要求?
【问题讨论】:
-
编译器会自动做到这一点!你想用这个来达到什么目的?
-
C++11 中有
alignof关键字。 -
@BigBoss:我正在使用自定义分配器,我想确保它始终返回正确对齐的指针。
-
好的,那么你可以使用 C++11 的
alignof或者你可以使用 sizeofdouble这不是标准的,但它适用于我所知道的所有类型的编译器!