读书人

函数的宏替换有关问题出现了未定义异

发布时间: 2013-10-01 12:15:56 作者: rapoo

函数的宏替换问题,出现了未定义错误
代码不多,如下:
#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)

读书人网 >C语言

热点推荐