关于宏的一些问题,请教
比如我写了
#define GetFoo(name) #XX##name
本意是先把XX和name连接起来,然后加上双引号,但是编译的时候就会出错error C2162: 应输入宏形参,如果想实现我的意图,应该怎么写?
还有一个问题
比如有
#define IMPLEMENT_FUNC(returnType, defReturnValue, fnName, paramList) \
returnType fnName paramList \
{ \
if (s_lpfn##fnName == NULL) \
{ \
return defReturnValue; \
} \
return s_lpfn##fnName /*这里应该怎么写???*/; \
}
这个情况是,我的类中保存了一个函数指针(加载dll的时候经常会用到),类将这个函数封装了一下,调用类的这个函数的时候会先判断函数指针是否为空,不为空则调用此函数。
现在的问题是 我这么写
IMPLEMENT_FUNC(int, 0, testFunc, (int a, int b))
这么写的问题在于在上面有注释的那一行,解析成了
return s_lpfntestFunc(int a, int b)
但我的本意是应该是return s_lpfntestFunc(a, b)。请问要实现我的本意应该怎么写?