鉴于这个宏:
#define SOME_MACRO(ret, f, args) \
typedef ret (*some_func_##f) args; \
static some_func_##f my_func_##f = NULL;
请告诉我相应的内容:
SOME_MACRO(void, myFunctionName, (int a));
感谢。
答案 0 :(得分:6)
您可以使用gcc的-E
标志来查看宏的扩展方式:
typedef void (*some_func_myFunctionName) (int a); static some_func_myFunctionName my_func_myFunctionName = ((void *)0);;
答案 1 :(得分:2)
static void (*my_func_myFunctionName) (int a) = NULL;
它声明一个变量my_func_myFunctionName
作为一个函数指针,该函数指向一个带int
并且不返回任何内容(void
)的函数。它将变量初始化为NULL
。
答案 2 :(得分:0)
#define SOME_MACRO(ret, f, args) \
typedef ret (*some_func_##f) args; \
static some_func_##f my_func_##f = NULL;
SOME_MACRO(void,myFunctionName,(int a));
将转换为
typedef void (*some_func_myFunctionName) (int a); //## concats myFunctionName to some_func_, ret becomes void
static some_func_myFunctionName my_func_myFunctionName = NULL;
##f concats myFunctionName to some_func_, ret becomes void args is (int a)