我有一个宏函数,其定义和实现如下:
#define TASK(k) void task_##k(void)
TASK(T1){ // expand to void task_T1(void)
//.....do something
}
我在主函数中调用task_T1()
可以工作,但是当我将task_T1
分配给(void)(*fptr)(void)
时会出错。
我想知道是否有可能将task_T1作为函数指针传递给另一个函数?
答案 0 :(得分:1)
一些选项
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TASK(k) task_##k
void TASK(T1)(void){ // expand to void task_T1
printf("T1\n");
}
#define TASKNAME(k) task_##k
#define TASK1(k) void TASKNAME(k)(void)
#define TASKCALL(k) TASKNAME(k)()
TASK1(T2)
{
printf("T2\n");
}
void (*ptr)(void) = TASK(T1);
void (*ptr1)(void) = TASKNAME(T2);
int main(void)
{
TASK(T1)();
ptr();
TASKNAME(T2)();
TASKCALL(T2);
ptr1();
}