当前位置: 技术问答>linux和unix
define宏定义问题
来源: 互联网 发布时间:2017-04-29
本文导语: 小弟菜鸟,想写一个检测Linux下硬盘读写速度的C程序,在参考hdparm源码时发现有如下语句,不是很明白,分很少,还望大神不吝赐教,要是有硬盘状态检测的源码就更好了。 #define DO_FLAG(CH,VAR) ...
小弟菜鸟,想写一个检测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);
#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;
case 't':
do_timings=1;
noisy=1;
break;
case 'T':
do_ctimings=1;
noisy=1;
break;
|
明白一点:宏只是简单的替换而已!
|
gcc -E 输出 预处理后的结果看看,也可以用 Eclipse ,鼠标指向DO_FLAG 就会展开