关于ucos-ii中的任务建立的参数问题

[复制链接]
 楼主| ldk060 发表于 2012-7-8 11:04 | 显示全部楼层 |阅读模式
建立任务的函数原型为:INT8U OSTaskCreate(void( *task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio) 其中的参数void( *task)(void *pd)是什么意思啊,我只是知道这个参数代表一个函数指针,能具体解释解释这个语法吗?
airwill 发表于 2012-7-9 20:10 | 显示全部楼层
是的. 这个参数代表一个函数指针
void( *task)(void *pd)
应该这么解释吧, void 的 pd 指针强制为 返回 void 类型的函数指针.
john_lee 发表于 2012-7-10 03:01 | 显示全部楼层
这样看,一个函数指针,与它指向的函数的原型,区别是“指针名”是“函数名”前加*,然后用圆括号括起。
例如:
void task(void*);      // 函数原型,函数名为 task。
void (*task)(void*);   // 函数指针,指针名为 task。
不管是函数原型或函数指针在声明和/或定义时,函数类型的参数是可省略的,所以:
void (*task)(void*) 和 void (*task)(void* pd) 是一样的。
Breming 发表于 2012-7-10 16:08 | 显示全部楼层
void 修饰变量时表示它的类型为任意,括号外边的void表示函数指针变量的类型为任意,括号里面的void表示任意类型的指针作为参数。。。。。。
ningling_21 发表于 2012-7-12 20:33 | 显示全部楼层
强制转换为指向任务的函数名...
haydon 发表于 2012-7-24 12:55 | 显示全部楼层
yyql008 发表于 2012-7-26 08:54 | 显示全部楼层
二楼说的貌似不对啊.
pd不是被强制了,而是被指向的函数所带的参数.
void (*task)(void*)
这样理解:task是个指向函数的指针,该函数带个void*参数,返回值为void
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

344

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

31

主题

344

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部