有这样的代码,怎么归并?
一个功能XXXX有对应这样的代码块:
#define XXXX_I_arg1 "sdfsdfsdf"
#define XXXX_I_arg2 "sdfsdfsdf"
...
#define XXXX_I_argn "sdfsdfsdf"
char XXXX_templ[]=
"sdfsdXXXXf" XXXX_I_arg1 "34XXXXrwerfwe" ...
;
#define XXXX_O_arg1 "sdfsdfsdf"
#define XXXX_O_arg2 "sdfsdfsdf"
...
#define XXXX_O_argm "sdfsdfsdf"
而功能yyyy有对应这样的代码块:
#define yyyy_I_arg1 "sdfsdfsdf"
#define yyyy_I_arg2 "sdfsdfsdf"
...
#define yyyy_I_argj "sdfsdfsdf"
char yyyy_templ[]=
"XXXXsdfsdf" yyyy_I_arg1 "34rwerfXXXXwe" ...
;
#define yyyy_O_arg1 "sdfsdfsdf"
#define yyyy_O_arg2 "sdfsdfsdf"
...
#define yyyy_O_argk "sdfsdfsdf"
共若干个功能
想把它们归并为:
#define CurFun XXXX
#define CurFun_I_arg1 "sdfsdfsdf"
#define CurFun_I_arg2 "sdfsdfsdf"
...
#define CurFun_I_argn "sdfsdfsdf"
char CurFun_templ[]=
"sdfsdf" CurFun_I_arg1 "34rwerfwe" ...
;
#define CurFun_O_arg1 "sdfsdfsdf"
#define CurFun_O_arg2 "sdfsdfsdf"
...
#define CurFun_O_argm "sdfsdfsdf"
这样,写yyyy功能对应的代码时,只要一次性
#define CurFun yyyy
在接着的代码块里不会有特点的yyyy出现了
char CurFun_templ[]=
还好办,只要先
#define __templ() CurFun##templ
即可
但是,#define CurFun_O_argm "sdfsdfsdf"就不好办了,因为宏定义的名字不能是“宏替换”的结果啊。。。
好像最好的办法就是代码生成器了。。。
嗯,其实只要允许这样就行了:
#define ddefine(n,s) #define n s
可惜c不支持:'#' is not followed by a macro parameter