我希望用变量代替被调函数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.
你需要再加一层宏展开
#include <iostream>
#define i 3
#define FUN1(n) test##n()
#define FUN(n) FUN1(n)
int FUN(i);
using namespace std;
int main()
{
FUN(i);
return 0;
}
int test3()
{
cout << "test3 printed,ok!" << endl;
return 0;
}