C语言跨平台编程指南
需积分: 9 126 浏览量
更新于2024-07-25
收藏 257KB PDF 举报
“writing portable programs In C”
在C语言编程中,编写可移植的代码是一项重要的技能,因为C语言与硬件的交互更为直接,这使得它能在多种不同的操作系统和硬件平台上运行。《Writing Portable Programs in C》是一份关于如何编写跨平台C代码的指南,它由A. Dolenc、A. Lemmke和D. Keppel共同编著,并在1990年的第五次修订版中更新。这本书涵盖了从预处理器到运行时库的多个方面,旨在帮助开发者理解和遵循标准,以确保代码的广泛兼容性。
1. **标准化努力**
- **ANSI C**:美国国家标准学会(ANSI)制定的C语言标准,也称为C89或C90,它为C语言设定了基础规则,包括翻译限制和未指定及未定义的行为。
- **翻译限制**:涉及到源代码的物理大小,如最大行长度、标识符长度等。
- **未指定行为**:这些是标准没有明确规定的结果,程序员应避免依赖它们。
- **未定义行为**:这是标准明确禁止的行为,执行可能导致任意结果。
2. **POSIX**:可移植操作系统接口(POSIX)标准,它基于UNIX系统并扩展了ANSI C标准,提供了跨不同UNIX实现的一致性。
3. **预处理器**:预处理器是编译过程的第一步,处理宏定义、条件编译指令等,对于可移植性至关重要。
4. **C语言**:指南深入讨论了C语言的语法和语义,这两个方面都必须符合标准,以确保代码在不同环境下的兼容性。
5. **Unix变体:System V和BSD**:由于存在多种Unix实现,了解System V和BSD之间的差异对于编写能在这些系统上运行的代码是必要的。
6. **头文件**:书中列举了几个关键的头文件,如`ctype.h`, `fcntl.h`, `errno.h`, `math.h`, `strings.h` vs. `string.h`, `time.h` 和 `types.h`, `varargs.h` vs. `stdarg.h`,并解释了它们在不同平台上的使用和兼容性问题。
7. **运行时库**:讨论了运行时库的功能,如错误处理、数学函数和I/O操作,这些都是跨平台代码的关键组成部分。
8. **编译器限制**:每个编译器可能有不同的限制,例如浮点精度、内存分配大小等,程序员需要了解这些限制以避免遇到意外问题。
9. **使用浮点数**
- **机器常量**:不同平台的浮点数表示可能会有差异,理解这些差异可以帮助编写可移植的浮点运算代码。
- **浮点参数**:传递浮点数作为函数参数时要考虑精度损失和平台差异。
- **浮点异常处理**:异常如除以零、溢出等需要特别处理,以确保代码在所有环境中都能正确处理。
这份资源提供了一个全面的框架,帮助开发者理解和实践编写可移植C代码的技巧和最佳实践,从而确保代码能够在广泛的硬件和软件环境中正常工作。通过遵循标准、理解编译器差异以及关注头文件和运行时库的使用,开发者可以创建出强大而灵活的C程序。
2009-09-11 上传
2009-05-27 上传
2019-01-26 上传
2011-04-15 上传
2019-07-01 上传
点击了解资源详情
点击了解资源详情
2024-12-28 上传
2024-12-28 上传
zwj525
- 粉丝: 0
- 资源: 24
最新资源
- Windows CE Programming [PDA][C++].pdf
- Wince深入浅出教程.pdf
- PlatformBuilderandEmbeddedVisualC++.pdf
- SQL语法参考手册,简单易用
- profiler使用大全
- ejb3.0实例教程.pdf
- 数据挖掘概念与技术Ed2
- Arm system developer's giude.pdf
- SVM Nice paper
- Spring开发指南(PDF)
- SQL Server 2005安装使用教程
- 需求分析的模板要的下
- VIM用户使用手册中文版
- Fedora10正式版完全安装教程.pdf
- 高速PCB设计指南高速PCB设计指南高速PCB设计指南
- zend framework 分页类