当前位置:  技术问答>linux和unix

struct 的member对齐问题

    来源: 互联网  发布时间:2016-06-19

    本文导语:  在32bit linux下面。 下面的代码 #pragma pack(push,4) typedef struct XX {         char    x;         long long               y; }XXX; #pragma pack(pop) main() {         printf("%dn",sizeof(XXX)); } 输出为 12 但是#pragma ...

在32bit linux下面。
下面的代码

#pragma pack(push,4)
typedef struct XX
{
        char    x;
        long long               y;
}XXX;
#pragma pack(pop)

main()
{
        printf("%dn",sizeof(XXX));
}
输出为 12
但是#pragma pack(push,8 ) 的时候输出仍然为12
而且我的g++参数也加上了 -fpack-struct=8
不知道为什么看起来#pragma pack(push,8 )没有起作用

|
pack(value)中的value的值不是可以任意大的。在32位机器上,最大的值就是4了。你写得再大,也是按照4来对待的。如果是64位机器,有可能是8。


|
应该是linux下32位机器,你设置为8字节对齐,它也只选择4字节分选项里的最下值来对齐吧。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql类types的类成员方法: struct定义及介绍
  • linux 下结构struct ethhdr,struct iphdr在那个头文件下;谢谢!!
  • java命名空间java.sql接口struct的类成员方法: getsqltypename定义及介绍
  • typedef_struct与struct之间的区别
  • java命名空间java.sql接口struct的类成员方法: getattributes定义及介绍
  • struct sock *sk和 struct sk_buff *skb之间的关系
  • 知道TCP/UDP的包头,如何判断其应用层协议类型,struct tcphdr和 struct udphdr结构中那个变量能判断应用层协议类型。
  • struct task_struct * get_current(void)函数的解释--help!!
  • 任意struct問題
  • Linux内核中work_struct的定义
  • struct 也有构造器吗?
  • struct dirent的问题
  • 关于struct timespec的一个问题
  • 没有名字的struct
  • struct in_addr 和 unsigned long的转换
  • 求解struct的大小
  • Python struct.unpack
  • 浙ICP备11055608号-3 iis7站长之家
  • 请问:从哪个header文件中看struct tty_driver的定义
  • struct timeval结构体的作用是什么呢?谢谢
  • 如何由pid获得task_struct?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3