中国开发网: 论坛: 程序员情感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
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


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