【发布时间】:2021-04-16 04:13:53
【问题描述】:
我定义了类似的宏,只是它们的区别是数字。 例如
#define Function_01_Call(param) (FunctionName((int)01, param))
#define Function_02_Call(param) (FunctionName((int)02, param))
#define Function_03_Call(param) (FunctionName((int)03, param))
#define Function_04_Call(param) (FunctionName((int)04, param))
我想使用宏 Function_XX_Call 调用函数 FunctionName。如何将一个字符串用于宏并更改其数字?我试过了
#define FUNCTION_CALL(num) Function_num_Call
int main()
{
char num;
for(num = "01"; num<="04"; num++)
{
FUNCTION_CALL(num); //HOW TO PASS param HERE?
}
}
但是如何在调用期间动态更改数字,因为变量不能在宏中使用。另外如何在通话期间传递参数?有没有办法使用函数指针?
【问题讨论】:
-
这意味着什么?:
char num; for(num = "01" -
您的真正问题是什么?请注意宏和 C 代码的不同“执行时间”:宏在编译期间扩展,但函数在运行时调用。
-
确实如此。为什么你会发现自己处于拥有这 4 个宏的情况?
标签: c embedded c-preprocessor dynamic-function