询问变量对齐方式

关键字__alignof__允许你询问一个对象如何对齐,或者一个类型的需要的最小对齐。它的语法很像sizeof

例如,不过目标机器需要一个双精度值来使一个8位的边界对齐,这样__alignof__(double)就是8.在许多RISC机器上就是这样的。在很多传统的机器设计,__alignof__(double)是4或者甚至是2.

一些机器实际上从不需要对齐;它们允许参考任意数据类型甚至在一个奇数地址上。对这些机器,__alignof__报告类型的建议对齐。

__alignof__的操作数是一个左值而不是一个类型时,这个值是这个左值已知有的最大对齐。它可能由于它的数据类有而有这个对齐,或者因为它是结构体的一部分并且从那个结构体继承了对齐。例如在这个声明之后:

struct foo { int x; char y; } foo1;

__alignof__(foo1.y)的值可能是2或4,同__alignof__(int)相同,即使foo1.y的数据类型自己不需要任何对齐。

这是要求一个不完全的类型的对齐的错误。

一个使你说明一个对象对齐的关联特征是__attribute__ ((aligned (alignment))); 请看下一篇

原文地址:https://www.cnblogs.com/HuangWj/p/6617874.html