This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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?