我显然遗漏了一些明显的东西,但我很难过:
我有一个源文件,我声明了所有的全局变量,以及匹配的头文件,并使它们都是extern。但是,当我尝试使用我的IDE(IAR)提供的编译指示来对数据进行数据对齐时,它不起作用。它将变量放在像0x20027424这样的地址上。如果我将变量移动到本地,它可以正常工作;地址以0结尾。
我错过了什么?
来自 Vars.c :
#pragma data_alignment=4
u16 g_uCompChk;
来自 Vars.h :
#pragma data_alignment=4
extern u16 g_uCompChk;
答案 0 :(得分:3)
data_alignment = expression
应该以字节为单位给出对齐,而不是对象大小的倍数。 因此,可以预期4字节边界上的对齐。根据您提供的示例地址,似乎一切正常