TI中文支持网
TI专业的中文技术问题搜集分享网站

CCS编译器 变量定义对齐原则

请教:

我在最近的程序调试中发现一些与变量地址对齐方式有关的问题,希望能讨论一下:

1、定义如下两个数组:

unsigned short A[40];

unsigned short B[64];

使用时发现A的基址有时会对齐到2,而B的基址总是对齐到4。而我现在希望数组首址对齐到4(便于在short和DWORD间强制转换)。

请问是不是只要把数组长度定义成16 32 64之类,编译器就会把数组对齐到4?

2、如果我定义这样一个结构:

{ short A;

   float  C;}

编译器能否保证在变量间不出现空闲的地址?

3、

如果是

{

short A;

short B;

float C;

}这样使得short成对出现,是否就能保证结构变量基址对齐到4?

Allen35065:

1, 对齐需要使用宏 #pragma DATA_ALIGN(A, 8) 以8byte对齐

2, 不能,这个结构里会出现16bit的空位,

3, 这样是可以的,为了保险起见你最好用宏将其对齐

赞(0)
未经允许不得转载:TI中文支持网 » CCS编译器 变量定义对齐原则
分享到: 更多 (0)