超级难题2:C/C++怎样用预处理指令把字符串常量化为标志符?(就是去掉引号,从而能参与编译)
超级难题,C/C++怎样用预处理指令把字符串常量化为标志符?(就是去掉引号,从而能参与编译)
事情是这样的,
比如我写一个递归函数
test(int a,int b)
{
....
test(i,j);
....
test(i,i);
}
现在我想把test的名字改为test2,
test2(int a,int b)
{
....
test2(i,j);
....
test2(i,i);
}
我非常懒,我想能这样写
test(int a,int b)
{
....
functionname(i,j);
....
functionname(i,i);
}
这样只要改一处就行了
test2(int a,int b)
{
....
functionname(i,j);
....
functionname(i,i);
}
现在是怎么获得functionname的问题,
C99中有__function__,VC中有__FUNCTION__
可是得到的是一个字符串。
test(int a,int b)
{
....
__FUNCTION__(i,j);
....
__FUNCTION__(i,i);
}
会被预处理成
test(int a,int b)
{
....
"test"(i,j);
....
"test"(i,i);
}
应该怎么把引号去掉呢?
在太极语言里,我直接设有functionname和classname自动宏,可以自动产生不带引号的标志符。
在C/C++里应该怎么办呢?
本人孤陋寡闻,请高手指教