D语言的移植性指南
来源:互联网 发布:电脑安装软件 编辑:程序博客网 时间:2024/05/16 13:00
移植性指南
从软件工程的观点来看,应尽量减少代码中那些可以避免的移植性问题。用于减少潜在的移植性问题的技术有:- 应该将整数和浮点类型的大小视为下界。算法应该能够在相应的类型大小增长后依然运行良好。
- 浮点运算应该可以使用高于保存相应值的变量的精度。浮点算法应该在相应的类型的精度提高后依然运行良好。
- 避免依赖于计算中那些副作用的顺序,因为编译器可能会改变这些顺序。例如:
a + b + c
可以按照各种顺序计算:(a + b) + c、a + (b + c)、(a + c) + b、(c + b) + a 等。括号控制运算符的优先级,但括号 不能 控制求值的顺序。尤其是,函数参数既可能从左到右计算,也可能从右到左计算,这依赖于所采用的调用管理。
如果可结合的运算符 + 或 * 的操作数是浮点值,表达式的顺序不会被调整。
- 避免依赖于字节序;也就是,不要依赖于 CPU 是“低字节优先”还是“高字节优先”。
- 避免依赖于指针或者引用的大小,它们可不一定同某个整数一样大小。
- 如果不可避免的要依赖于类型的大小,应该在代码中放入一个 assert 进行验证:
assert(int.sizeof == (int*).sizeof);
32 位平台向 64 平台移植
64 位处理器和操作系统正走向我们。初步的想法:- 无论是在 32 位还是在 64 位代码中,整数类型的大小相同。
- 从 32 位迁移到 64 位后,指针和引用的大小将从 4 字节增为 8 字节。
- 使用 size_t 作为可以覆盖整个地址空间的那个无符号整数类型的别名。
- 使用 ptrdiff_t 作为可以覆盖整个地址空间的那个无符号整数类型的别名。
- .length、.size、.sizeof 和 .alignof 属性的类型为 size_t 。
特定于 OS 的代码
特定于系统的代码应该单独放入各自独立的模块中。在编译时,导入特定于当前系统的模块。处理较小的差异时,可以在特定于系统的模块内定义一个常量,然后使用 if 语句处理各种情况。
- D语言的移植性指南
- symantecc++编译器的作者将d语言移植到mac
- D语言的配置
- 基于BF531 DSP的uClinux 移植指南
- C 对于C语言可移植性的思考
- 如何理解编程语言的可移植性
- 对于C语言可移植性的思考
- C 对于C语言可移植性的思考
- go语言指南的练习
- D语言手册的链接
- D 语言的变量生命周期
- QT移植指南
- vs2010 移植指南
- RTEMS 移植指南
- CyanogenMod 官方移植指南
- YAFFS2移植指南
- 基于TFT的ZLG_GUI和3D显示的移植
- 基于TFT的ZLG_GUI和3D显示的移植
- [C++] C++ Builder 下实现端口读写
- 从今天起,向ASP.NET进军中........耶耶耶....
- [DEV] Windows下DLL编程技术及应用
- 翻译:虚拟相册
- 由于网速引起的问题
- D语言的移植性指南
- 虚拟交易的经济学
- [C++] C++ Builder 下开发具有Windows任务栏布告区图标的应用程序
- 在其他blog中看到的求质数的算法...数学还是很重要的...
- [C++] 用C++ Builder创建数字签名
- [C++] 利用 C++ Builder 进行精确计时
- 做一个杰出的营销人
- [C++] 在 C++ Builder 中使用 ActiveX 控件显示 Flash 动画
- Java事件处理与发送原理