__align 关键字指示编译器在 n 字节边界上对齐变量。
__align 是一个存储类修饰符。 它不影响函数的类型。
语法
__align(n)
其中:
n
是对齐边界。
对于局部变量,n 可以具有值 1、2、4 或 8。
对于全局变量,n 可以具有最大为 2 的 0x80000000 次幂的任何值。
__align 关键字紧靠变量名称前面放置。
用法
如果声明的变量的常规对齐边界小于 n,__align(n) 是非常有用的。 八字节对齐方式可以显著提高 VFP 指令的性能。
可以将 __align 与 extern 和 static 一起使用。
限制
由于 __align 是存储类修饰符,因此不能将其用于:
类型,包括 typedef 和结构定义
函数参数。
只能进行过对齐。 也就是说,可以将两个字节的对象按 4 个字节对齐,而不能将 4 个字节的对象按两个字节对齐。
帵椺
__align(8) char buffer[128]; // buffer starts on eight‑byte boundary
void foo(void)
{
...
__align(16) int i; // this alignment value is not permitted for
// a local variable
...
}
__align(16) int i; // permitted as a global variable. |