编程细节积累

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))
这里看似写的很复杂,但实际上可以利用内联函数进行代替,内联函数相对宏的最大一个优势点就是带有参数类型检测。

猜你喜欢

转载自blog.csdn.net/eagleqingluo/article/details/9019259