关于x86 gcc2.9 变量对齐解决办法
发布时间: 2013-12-15 22:17:19 作者: rapoo
关于x86 gcc2.9 变量对齐
在头文件中定义
typedef struct
{
xxxx;
xxxx
}structname __attribute__((__aligned__(0x1000)));
在源文件中使用:
structname yyyy[5];
yyyy 的地址没有按照4k进行对齐。
请问怎么才能让它在编译的时候进行对齐。
如果声明成:
structname yyyy[5] ={0};
可以进行对齐,但是我不希望yyyy被放在data段。
请各位帮忙,在gcc2.9下如何才能让yyyy在bss段,并地址按照4k进行对齐。
x86 gcc 对齐
[解决办法]应该这样用,你的写法是结构体内部的对齐:
#include <stdio.h>
typedef struct
{
int x;
int y;
}point_t;
point_t pt[5] __attribute__((__aligned__(0x1000)));
int main(int argc, char* argv[])
{
printf("%p\n", &pt[0]);
return 0;
}
[解决办法]换了方式测试结果达到要求了么?为什么不放在data段呢?