__align
__align
关键字指示编译器在
字节边界上对齐变量。n
__align
是一个存储类修饰符。它不影响函数的类型。
语法
__align(n)
其中:
-
是对齐边界。
对于局部变量,
值可为 1、2、4 或 8。n
对于全局变量,
可以具有最大为 2 的 0x80000000 次幂的任何值。n
__align
关键字紧靠变量名称前面放置。
n
用法
如果声明的变量的常规对齐边界小于
,n
__align(
是非常有用的。八字节对齐方式可以显著提高 VFP 指令的性能。n
)
可以将 __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. 参考:ARM手册