字节对齐---arm-linux-gcc和gcc
来源:互联网 发布:java web 日志框架 编辑:程序博客网 时间:2024/06/09 16:33
下面是从别处找来的,很久前看到
linux下GCC 对齐方式的最大模数是4,即使设置为8,那也只是4字节对齐。
下面内容原地址:
http://blog.sina.com.cn/s/blog_4c451e0e0100gx3o.html
方法一:
#include <stdio.h>
#pragma pack(1)
struct abc
{
double a;
int b;
char c;
};
#pragma pack()
void main()
{
printf( "sizeof( struct abc ) = %d/n", sizeof( struct abc ) );
}
以上代码
gcc tBytePadding.c -o tBytePadding
Ubuntu执行结果:sizeof( struct abc ) = 13
/usr/local/arm/2.95.3/bin/arm-linux-gcc -I /usr/local/arm/2.95.3/arm-linux/include tBytePadding.c -o tBytePadding
执行结果:sizeof( struct abc ) = 16 <-- 依然四字对齐了,没有一字节对齐
方法二:
#include <stdio.h>
typedef struct tagabc
{
double a;
int b;
char c;
}__attribute__( ( packed, aligned( 1 ) ) ) abc;
void main()
{
printf( "sizeof( abc ) = %d/n", sizeof( abc ) );
}
或
#include <stdio.h>
struct abc
{
double a;
int b;
char c;
}__attribute__( ( packed, aligned(1) ) );
void main()
{
printf( "sizeof( struct abc ) = %d/n", sizeof( struct abc ) );
}
以上代码
gcc tBytePadding.c -o tBytePadding
Ubuntu执行结果:sizeof( struct abc ) = 13
/usr/local/arm/2.95.3/bin/arm-linux-gcc -I /usr/local/arm/2.95.3/arm-linux/include tBytePadding.c -o tBytePadding
执行结果:sizeof( struct abc ) = 13
推荐使用方法二的第一种!
注意:
typedef struct tagabc
{
double a;
int b;
char c;
}__attribute__( ( packed, aligned( 1 ) ) );
tagabc abc;
以上写法会报此错误:warning: ‘packed’ attribute ignored
typedef struct tagabc
{
double a;
int b;
char c;
} abc __attribute__( ( packed, aligned( 1 ) ) );
以上写法也会报此错误:warning: ‘packed’ attribute ignored
- 字节对齐---arm-linux-gcc和gcc
- arm-linux-gcc 与 gcc 关于字节对齐问题
- Linux下的 arm-linux-gcc 与 gcc 关于字节对齐问题
- linux和windows gcc g++ vc编译器字节对齐
- 浅析gcc、arm-linux-gcc和arm-elf-gcc关系
- GCC 字节对齐设置
- GCC 字节对齐设置
- 关于VS和GCC字节对齐
- gcc和arm-linux-gcc区别
- arm-linux-gcc 和gcc的问题
- arm-linux-gcc和arm-elf-gcc 区别
- 转 arm-linux-gcc和arm-elf-gcc 区别
- arm-linux-gcc和arm-elf-gcc区别
- arm-linux-gcc和arm-elf-gcc 区别
- arm-linux-gcc和arm-elf-gcc 区别
- arm-linux-gcc和arm-elf-gcc 区别
- arm-linux-gcc和arm-elf-gcc 区别 【转】
- arm-linux-gcc 和 arm-elf-gcc 区别
- 重新学一遍JAVA,只用三天
- 一个AJAX局部刷新 asp
- aimei
- losetup 命令的用法
- 2011春“东林杯”ACM/ICPC黑龙江省赛总结
- 字节对齐---arm-linux-gcc和gcc
- struts1 上传图片
- AndroidGUI17:Layout常用技巧
- Python学习---日期操作
- 用时间生成不重复的字符
- 测试javascript checkUrl isUrl验证url范例
- ajax+jsp 以及js编码处理问题
- 大脑发育
- SCP(Secure Copy)