日期:2014-05-16  浏览次数:20745 次

define宏定义问题
小弟菜鸟,想写一个检测Linux下硬盘读写速度的C程序,在参考hdparm源码时发现有如下语句,不是很明白,分很少,还望大神不吝赐教,要是有硬盘状态检测的源码就更好了。

#define      DO_FLAG(CH,VAR)              CH:VAR=1;noisy=1;break


case      DO_FLAG('t',do_timings);
case      DO_FLAG('T',do_ctimings);
硬盘速度检测

------解决方案--------------------
宏展开后,相当于:

case 't':
    do_timings=1;
    noisy=1;
    break;

case 'T':
    do_ctimings=1;
    noisy=1;
    break;
------解决方案--------------------
明白一点:宏只是简单的替换而已!
------解决方案--------------------
gcc -E 输出 预处理后的结果看看,也可以用 Eclipse ,鼠标指向DO_FLAG 就会展开