【发布时间】:2010-05-27 02:02:35
【问题描述】:
有没有人知道怎么做这样的事情...
我有很多重复的宏:-
#define MYMACRO1(x) Do1(x)
#define MYMACRO2(x,y) Do2(x, y)
#define MYNEXTMACRO1(x) Do1(x)
#define MYNEXTMACRO2(x,y) Do2(x, y)
上面的代码工作正常,但我想编写一个创建宏的宏(元宏)。
例如:-
#define MYMETAMACRO(name) \
#define #name1(x) Do1(x) \
#define #name2(x,y) Do2(x, y) \
这样我可以做到:-
MYMETAMACRO(MYMACRO);
MYMETAMACRO(MYNEXTMACRO);
然后:-
MYMACRO1(2);
MYMACRO2(2,3);
MYNEXTMACRO1(4);
MYNEXTMACRO2(4, 5);
预处理器在#define 处爆炸,因为它认为它是宏的缺失参数。
【问题讨论】:
-
不使用 c 预处理器只会让你渴望 lisp?
-
另一个问题的答案在技术上可能是正确的,但我认为它们还不够完整,所以我不会投票结束。
-
@Whirlwind:你可以总是为另一个问题添加一个新的、更完整的答案......
-
……我可以,但大卫让我注意到它不完整。但是,我已在此处添加了我的答案,以供将来参考。
标签: macros c-preprocessor