可能重复:
有人知道怎么做这样的事吗..。
我有很多重复的宏:-
#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上爆炸,因为它认为它是宏缺少的参数。
发布于 2010-05-27 02:15:39
据我所知,您不能用C/C++编写另一个宏。
过去,我已经花了足够的时间尝试使用C++中的C预处理器来做类似的事情,询问了周围的人,并得出结论认为这是不可能的。
发布于 2010-05-27 02:09:00
您不能在其他宏中定义宏,但可以从宏中调用宏,这样可以获得基本相同的结果。
#define B(x) do {printf("%d", (x)) }while(0)
#define A(x) B(x)因此,A(y)被扩展为do {printf("%d", (y)) }while(0)。
https://stackoverflow.com/questions/2918027
复制相似问题