用编译运算符##创造被调函数名,调用函数。
我希望用变量代替被调函数test3()中的3.
我的解答思路和尝试过的方法
#include <iostream>
using namespace std;
//用字面值3可正常工作。
#define FUN(n) test##n(); //宏定义
int FUN(3) //函数声明语句,宏展开即:test3();
int main()
{
FUN(3); //调用指定函数test3()
return 0;
}
int test3()
{
cout << "test3 printed,ok!" << endl;
return 0;
}
我希望用变量代替test3中的3.
下面是我对两次尝试,均未成功。恳求指导。谢谢!
//尝试一:试图用常变量代替3。失败
#define FUN(n) test##n(); //宏定义
constexpr int i = 3;
int FUN(i) //函数声明语句,宏展开为:testi(); i 未被转化为3
int main()
{
FUN(i); //拟调用指定函数test3(),失败
return 0;
}
//尝试二:试图用宏定义代替3。失败
#define FUN(n) test##n(); //宏定义
#define i 3;
int FUN(i) //函数声明语句,i虽然展开为3,但仍报错。好像仍展开为:testi();
int main()
{
FUN(i); //拟调用指定函数test3(),失败
return 0;
}
int test3()
{
cout << "test3 printed,ok!" << endl;
return 0;
}
我想要达到的结果
我希望用变量代替test3中的3.