- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
可移植的C语言编程指导书
目 录
1 目标 4
1.1 C语言进行产品开发的指南, 使产品可以以最小工作量进行移植。 4
2 范围 4
1.2 该流程适用于所有用C语言开发的产品 4
2 指南 4
2.1 可移植性问题 4
2.1.1 外部数据 4
2.1.2 How to access External Data怎样访问外部数据 9
2.2 C Language 10
2.2.1 Use of type char字符类型的使用 10
2.2.2 Use of type int整型的使用 11
2.2.3 Use of type long长型的使用 11
2.2.4 Use of type short短型的使用 12
2.2.5 Use of register寄存器的使用 12
2.2.6 Use of the null pointer空指针的使用 12
2.2.7 Use of struct结构的使用 14
2.2.8 Use of union联合的使用 15
2.2.9 Order of Evaluation赋值的优先级 16
2.2.10 Compiler Features编译器特性 16
2.2.11 Limits约束 16
2.2.12 Promotion升级 18
2.3 Other Features其他特性 18
2.3.1 Use of #ifdef 18
2.3.2 Use of #include 18
2.3.3 Use of static 19
2.3.4 Use of Global Variables 19
2.3.5 Thread-safe code线程-安全代码 20
2.3.6 Use of #pragma 20
2.3.7 Warning Levels告警级别 21
2.3.8 Use of setjmp() and longjmp() 21
2.3.9 Undiscovered Bugs未发现BUG 21
2.4 Build Dependancies 22
2.4.1 Carriage-Returns 22
2.4.2 Make file Dependancy 22
2.5 Quick Reference Guide快速参考指南 22
3 Associated Forms/Records 相关表格/记录 24
Portable C Coding Guideline
可移植的C语言编程指导书
关键词:
缩略语清单:对本文所用缩略语进行说明,要求提供每个缩略语的英文全名和中文解释。
目标
C语言进行产品开发的指南, 使产品可以以最小工作量进行移植。
范围
该流程适用于所有用C语言开发的产品
指南
可移植性问题
本文讨论模块的可移植性。本文主要针对通用的编译器和平台。
外部数据
传统的写外部数据格式(比如文件格式或者网络协议)的方法是简单地将内部的数据结构写到外部的设备上。这样的做法违背了上面提到的基本法则。
用可移植的代码以及可移植的APIs写成的代码可以正确地在多个平台上运行,只在一种情况下例外:二进制数据的输入,输出,这不仅包括读写二进制文件,还包括对网络协议的处理。 基本问题在于我们的数据结构用内部的数据格式往外部的设备写。由于两种不同的平台有着不同的内部格式,相应地外部的数据格式也就无法知道。
不要随意假设文件的内部结构。
Word Byte-Ordering 字顺序
字节顺序这个术语指的是CPU存储多字节整数(通常有2字节,4字节或是8字节)的顺序。
Intel 和 VAX 的CPU上, 用的是低字节/高字节的顺序。 对于两个字节长度的整数,意味最低位的字节被先放在内存空间。和人们读数据的方法相反。
Motorola 68000 和 SPARC 体系结构用高字节/低字节模式来存放整数,意味着内存中的第一个字节存放的是高位字节。这也是我们人类阅读数字的方式。一些RISC CPUs (MIPS, Alpha, i960, PowerPC) 能用两种字节顺序方式工作。
设想你是一个调试人员,正在看两个整数:0x1234 和 0x0055. 下面的例子里,第一行和第二行以16进制分别表示了在Intel 和Motorola 处理器里面那些整数是如何被存在在内存里面的。
34 12 55 00
12 34 00 55
通常地,程序员是不会意识到字节顺序的。语句
x = 5;
不管数字5的内部存储(可能是00 05或者是05 00)如何效果都是一样的。因此,字节顺序对一般代码而言是不可见的,仅当从外部读/写二进制代码时才关心它。
在以往,读文件最
文档评论(0)