(1)#pragma DATA_ALIGN
语法:
#pragma DATA_ALIGN( symbol,constant)
作用:排列symbol到constant 指点的列边界,constant为2的n次方,n=0,1,2..
说白了就是首地址的字节对齐,首地址字对齐的最大好处就是可以告诉编译器充分利用行或块拷贝。
假设一个CACHE 的line 是128 字节【CACHE line简单说就是CACHE一次加载的字节数】。这样,如果首地址128 字节对齐,那么取一个128 字节的数据,只使用一个CACHE行就够了(如果不对齐,则取一个128 字节的数据至少需要2个CACHE行)。
例:
void func(void)
{
#pragma DATA_ALIGN(x,128)
int x[200];
}
(2)#pragma STRUCT_ALIGN
语法:
#pragma STRUCT_ALIGN(symbol,constant);
这个不用多说,和#pragma DATA_ALIGN很类似,只是#pragma STRUCT_ALIGN是针对结构而言。
typedef strct stSymbol
{
int A;
char B;
short C;
}STRUCT_TYPEDEF;
#pragma STRUCT_ALIGN(stSymbol,128);
===============