中国开发网: 论坛: 程序员情感CBD: 贴子 354725
haitao
有这样的c代码,怎么归并?--可能描述不清。。。有点绕。。。
有这样的代码,怎么归并?
一个功能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

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录