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

Solaris下 C 语言编译时结构体成员对齐问题,请教!急!先谢了!

    来源: 互联网  发布时间:2015-02-23

    本文导语:  TestSize.c: #include  struct cos_prodlist{ char mode; char submode; char sts; char substs; char *bufad; unsigned int  bufsz; short menmode; char baitai[1]; char kmsbt; short year; char month; char day; char menname[20]; char ...

TestSize.c:

#include 
struct cos_prodlist{
char mode;
char submode;
char sts;
char substs;
char *bufad;
unsigned int  bufsz;
short menmode;
char baitai[1];
char kmsbt;
short year;
char month;
char day;
char menname[20];
char hanname[20];
char hzkname[24];
unsigned int  menid;
short ysomode;
unsigned short sid;
unsigned short recsu;
char resend;
unsigned char spflag;  
char sozaiid[20];
char uid[12];
};

struct cos_prod_param {
unsigned short recsu;
unsigned short rslt;
};
struct cos_prod {
struct cos_prod_param param;
struct cos_prodlist p[1];
};
void main()
{
struct cos_prod spara;
struct cos_prodlist *p;
p = (struct cos_prodlist *)((long)(&spara) + sizeof(struct cos_prod_param));
printf("-----&spara=%p-----n",&spara);
printf("-----&spara.param=%p-----n",&(spara.param));
printf("-----sizeof(struct cos_prod_param)=%d----n",sizeof(struct cos_prod_param));
printf("-----after calculate p=%p-----n",p);
printf("-----in fact p=%p-----n",(spara.p));
}


如上一段代码用下列命令编译:cc -xmemalign=2s -xarch=v9 -O -o TestSize TestSize.c 

运行 TestSize

结果:
-----&spara=ffffffff7ffff2a0-----
-----&spara.param=ffffffff7ffff2a0-----
-----sizeof(struct cos_prod_param)=4----
-----after calculate p=ffffffff7ffff2a4-----
-----in fact p=ffffffff7ffff2a8-----

为什么自己计算的结构体地址和实际所指向的地址不同?


|
你用了-xarch=v9参数,编译器使用64位对齐,
所以cos_prod.param占了4个bytes,然后在补
4 bytes对齐。

|
对齐的问题我从来都是让编译器自己去做:)

|
真是挺奇怪的……

可惜我啥都不会

顶!

    
 
 

您可能感兴趣的文章:

  • Solaris系统下,使用gcc编译程序,请问采用1字节对齐应该怎样设置
  • solaris 10下的多线程和solaris 5.8下多线程编译有什么区别??
  • 请问各位高手,怎么样在windows上通过批处理脚步启动solaris上的编译器,实现自动编译?(solaris通过telnet登陆)?
  • 请问高手,在Solaris 8 gcc3.1编译的 *.o 和库文件 *.a ,可以提供在Solaris 7,9下使用吗?
  • 在linux+x86下用交叉编译器编译出能在solaris+x86运行的文件时遇到的问题
  • solaris 如何编译库
  • Solaris下编译器版本不同,编译后的物件大小不同?
  • 关于solaris安装,安装C/c++编译器的问题
  • solaris的编译环境的问题
  • 请问哪有Solaris下的GCC编译器下载??
  • solaris 安装cc编译器
  • solaris2.6下安装c编译器问题
  • 求Solaris下的GCC编译器
  • solaris9 静态库编译出错
  • 请教如何在solaris 8上安装c编译器
  • solaris下一个编译错误~请高人解答
  • 在sun solaris 8系统下有没有具编辑、编译、调试一体的集成C(C++)开发工具?谢谢!
  • solaris 下gcc 编译出错.
  • 晕了,solaris系统下,使用gcc -g选项编译出的程序,怎么没有调试信息
  • solaris下cc编译器连接时出错?
  • Solaris上是不是自带有c 和 c++的编译器?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教solaris高手一个solaris安装问题
  • 请教solaris中home目录的问题!
  • 请教给SOLARIS打PATCH的问题!
  • 请教solaris自动网络安装的问题
  • 请教Solaris下怎样才能正确显示gtk程序中控件上的中文??
  • 请教!如何在WinXP和Win2003双系统下安装Solaris?
  • 请教关于用啥工具监控Solaris服务器的问题
  • 怎样把solaris系统下oracle数据导入access中??请教!!急~
  • 请教solaris 10 下MAC地址问题
  • 请教有关Solaris上NameService的问题,望高手赐教
  • solaris8下j2sdk安装问题请教
  • 请教:在Solaris以及AIX系统下如何查看系统所支持同时打开的文件数?
  • 请教solaris下samba的使用问题
  • 请教Solaris 10 安装TOP工具不能使用的问题
  • 高分请教:solaris怎样配置telnet远程登陆
  • 请教:solaris经常自动重启或者死机,请问如何查找问题?在线等。
  • 高分相送:恳请高手请教一下:solaris下做什么最有前途和“钱”图呢?
  • solaris iso文件问题请教。
  • 请教:solaris下如何打印文件,需要支持选择纸张类型和选择黑白彩色!
  • 请教:solaris下有什么命令可以取得所在服务器的IP?
  • solaris 8上能用gcc for solaris7 或 solaris9的版本吗?
  • Solaris菜鸟!!!请问Solaris SPARC和Solaris x86这两个版本之间有什么具体的差异吗?
  • 请问Solaris现在最高的版本是多少?Solaris8.0价格如何?Solaris8.0和Red Hat Enterprise Linux AS 3.0有何区别?
  • 听说在solaris上运行java飞快,solaris有多大,如果不大,我想下载,哪有下载?
  • 请问:SOLARIS(for intel)如何装d-link网卡。哪儿下Solaris电子文档。
  • Solaris for X86 和Solaris for Sparc主要区别在哪?
  • 请问Solaris的优势?Solaris下开发相关及系统管理相关资料是否有提供?谢谢
  • telnet 进去的时候我看写着SUN OS5.8,这个是不是Solaris?我找不到Solaris5.8的软件?
  • 没有光碟,怎样从solaris8升级到solaris9?
  • solaris 10能不能远程桌面连接Solaris 10(或 Linux) ,不要安装其他软件
  • 我装了Solaris后,98和2000都找不到了,启动时直接进入Solaris,该怎么办,请高手指点!


  • 站内导航:


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

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

    浙ICP备11055608号-3