我的意思就是,如下定义一个带参的宏:
#define abc(p) <宏体>
希望根据p的不同值进行不同的替换,例如p==0时替换成int,p==1时替换成double这样的。
您好,您这个回答已经十分充分了,但是还想继续请教一下:
#define _abc(pp) pp
#define abc(p) \
{if(p==0) _abc(int); \
else _abc(double);}
我希望abc(p)直接可以作为类型说明符来使用,请问还需要如何修改?
你说用type来定义数据吗?
#include _abc(p,type) \
type temp;
可以直接定义啊
调用_abc(1,int);就展开成int temp;
另外不知道你了解#,##用法不,宏展开里#用来连接字符串,##用来连接代码,如
#define print(x) "hello " #x那么print(xf);就打印hello xf
#define print(n) x##n 那么print(1)就打印x1
#和##的用法看您的解释已经懂了,但是我上一次追问所要表达的意思就是,希望一个宏定义,参数输入是0,1,2,然后该宏定义就对应替换成为int, char, double,这个替换后的结果我直接就要用来声明数据,例如abc(0) intVar=100;或者vector这样的,您看看有无可能。
追答哦,这样啊,我也不知道怎么做了
啊啊啊,太好了,请问具体怎么做?
追答在宏里面用if语句嘛