编程细节积累
2013-06-04 09:15
169 查看
1.空操作循环的注意点
在有些时候我们必要用一些while (condition)或for (;condition;)这样的循环空操作。
但是这里也是一个易错点,经常习惯性的不用{},或者习惯性的加上了分号。
坏习惯
while (condition);
较好的习惯
while (condition) {
}
建议的习惯
while (condition) {
NULL;
}
在内核编程中,我们可以使用cpu_relax()来代替NULL,使CPU与能耗更加优秀
while (condition) {
cpu_relax();
}
这里如果不是较严格的退出时间,可以使用schedule()来替换cpu_relax.
2.特定参数类型的运算宏,最好使用typecheck来测试参数类型是否符合要求;
普通用法
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
建议用法
#define MAX(a, b) typecheck(typename, a) && typecheck(typename, b) && (((a) > (b)) ? (a) : (b))
这里看似写的很复杂,但实际上可以利用内联函数进行代替,内联函数相对宏的最大一个优势点就是带有参数类型检测。
在有些时候我们必要用一些while (condition)或for (;condition;)这样的循环空操作。
但是这里也是一个易错点,经常习惯性的不用{},或者习惯性的加上了分号。
坏习惯
while (condition);
较好的习惯
while (condition) {
}
建议的习惯
while (condition) {
NULL;
}
在内核编程中,我们可以使用cpu_relax()来代替NULL,使CPU与能耗更加优秀
while (condition) {
cpu_relax();
}
这里如果不是较严格的退出时间,可以使用schedule()来替换cpu_relax.
2.特定参数类型的运算宏,最好使用typecheck来测试参数类型是否符合要求;
普通用法
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
建议用法
#define MAX(a, b) typecheck(typename, a) && typecheck(typename, b) && (((a) > (b)) ? (a) : (b))
这里看似写的很复杂,但实际上可以利用内联函数进行代替,内联函数相对宏的最大一个优势点就是带有参数类型检测。
相关文章推荐
- 编程细节积累01
- 风雨20年:我所积累的20条编程经验
- 积累的VC编程小技巧之工具条和状态条
- 风雨20年:我所积累的20条编程经验
- 风雨20年:我所积累的20条编程经验
- S2 深入.NET和C#编程 笔试测试错题积累
- java经典小函数、细节积累
- 风雨20年:我所积累的20条编程经验
- python 网络编程 小知识积累
- 我的编程之路(十九) 开发中一些细节与启发
- 积累的VC编程小技巧之标题栏和菜单
- 技术积累应用-可视化编程平台应用层面:标准模版类
- C++&C编程相关小细节
- 学习笔记(10) : Socket 编程典型代码积累
- 数据库编程细节问题 --1. insert与where问题
- Jonathan:我所积累的20条编程经验
- 编程经验积累
- Xtreme 界面库编程 细节
- Unix 网络编程(二)- 你需要知道的传输层协议实现细节。
- 风雨20年所积累的20条编程经验