数据对齐全局变量

时间:2014-04-10 13:52:42

标签: c iar

我显然遗漏了一些明显的东西,但我很难过:

我有一个源文件,我声明了所有的全局变量,以及匹配的头文件,并使它们都是extern。但是,当我尝试使用我的IDE(IAR)提供的编译指示来对数据进行数据对齐时,它不起作用。它将变量放在像0x20027424这样的地址上。如果我将变量移动到本地,它可以正常工作;地址以0结尾。

我错过了什么?

来自 Vars.c

#pragma data_alignment=4
u16  g_uCompChk;

来自 Vars.h

#pragma data_alignment=4
extern u16  g_uCompChk;

1 个答案:

答案 0 :(得分:3)

data_alignment = expression

应该以字节为单位给出对齐,而不是对象大小的倍数。 因此,可以预期4字节边界上的对齐。根据您提供的示例地址,似乎一切正常