Clang 宏定义初探(二)
本篇总结下这几天看的宏的一些看到的用法。
1、参数粘结
这是一个类似 shell 之类的脚本语言的特性,可以利用这个特性完成一些重复度比较高的编码的简化。
例如,对proc文件系统进行绑定的时候,需要在/proc/test/目录下,简历3个文件接口,test1、test2、test3.
可以这样写
#define BIND(x) test##x->read_proc=test##x##_read
在使用的时候,就可以
BIND(1); //展开为test1->read_proc=test1_read;
BIND(2); //展开为test2->read_proc=test2_read;
不管是从语义还是编码复杂度,都降低了。
2、参数字符化
在使用单个 # 号,作为函数式宏的参数前缀时,可以让宏的内容变成字符串,比如说: