64位操作系统编程规范.pdf

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
64位操作系统编码规范 一、Linux及Windows主要类型字节长度 类型 32位 64位 short 2 2 int 4 4 long 4 Linux:8 Windows:4 size_t 4 8 void *(及其它指针) 4 8 time_t 8 8 float 4 4 double 8 8 二、不允许使用long型; 三、不允许把int强制转换为指针,反之亦然;下面是错误的: int i = (int )ptr ; 或: void *ptr = (void *) s32Tmp; 四、不允许在不同类型的指针 (有继承关系除外)进行强制转换,如:int *ipTmp; time_t *tpTmp = *ipTmp; 是错误的; 五、强烈建议使用带长度的类型,如 :SInt32/UInt64 等; 六、必须使用%p打印指针,如printf( “this[%p]\n”,this); 七、强烈建议不要采用scanf ,scanf非常危险,Format 和参数类型不一致时,非常容易导致越 界写。如果必须使用,则必须认真区别32和64位的操作系统整数长度的差别,需要时,分别 针对32和64位编写代码; 八、如果编写动态链接库,必须加上–fPIC编译选项; 九、采用GCC编译器时,必须使用-Wlong-long 、-Wformat -Wpointer-arith 来发现 64 位编译 问题,并关注相关警告信息; 十、编译器指示宏定义 宏定义 描述 __linux__ Linux操作系统,与Windows 及其它类型操作系统区别 i386 Linux操作系统,32位x86架构 x86-64(注意是减号) Linux操作系统,64位x86架构 _WINDOWS_ Windows 操作系统,与其它操作系统区别 _X86_ Windows 操作系统,32位x86架构 __MacOSX__ Apple OSX _posix_ 符合POSIX 规范,类Unix 操作系统,包括Linux/IBM AIX/HPUS/Sun Solaris/Apple MacOSX 等 十一、 宏使用说明:  我们的代码要求同时支持32位和64位版本;  尽量不要使用与架构相关的宏,如 i386/ x86-64/_X86_/Win32 等,在同一操作系统中,API 一般与架构无关,这样可以让代码具有良好的移植性;  我们的软件主要在类Unix( 符合POSIX 规范,包括Linux)和W indows 下运行,优先使用_posix_ 作为区别非windows 操作系统;  如果对准备使用的类UNIX下系统调用(API )是否支持其它操作系统没有把握,可使用

文档评论(0)

老郑家的书房 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档