函数的宏替换问题,出现了未定义错误
代码不多,如下:
#include <stdio.h>
#define uint32_t unsigned int
#define func1(ret, ret_len) do { \
printf("fuck!\n"); \
} while(0)
typedef void (*SS_FP_APPMNG_CB)(void *, uint32_t);
int main(void)
{
SS_FP_APPMNG_CB fun_cb;
fun_cb = func1;
return 0;
}
/******************************/
编译之后出现错误:
‘func1’ undeclared(first use........)
请教各位大神,这个问题怎么解决呢?
[解决办法]
typedef void (*SS_FP_APPMNG_CB)(void *, uint32_t);
这一句声明了一个新的函数指针类型SS_FP_APPMNG_CB
SS_FP_APPMNG_CB fun_cb;
这一句定义了一个函数指针fun_cb
fun_cb = func1;
函数指针指向了一个不认识的东西
为什么呢,看看func1是什么
#define func1(ret, ret_len) do { \
printf("fuck!\n"); \
} while(0)
嗯,func1是一个宏,宏和函数是完全不同的两码事,结束
[解决办法]
楼主看来完全没有理解宏函数的意思哟. 宏就是做代码替换工作的.
楼主想实现什么功能呢?
函数指针, 仿函数都是很好用的东西呀.
[解决办法]
//楼主既然知道宏是简单文字替换 那么楼主认为下面这代码是做什么呢?
fun_cb = do { \
printf("fuck!\n"); \
} while(0)