ldk060 发表于 2012-7-8 11:04

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

建立任务的函数原型为: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

mk

yyql008 发表于 2012-7-26 08:54

二楼说的貌似不对啊.
pd不是被强制了,而是被指向的函数所带的参数.
void (*task)(void*)
这样理解:task是个指向函数的指针,该函数带个void*参数,返回值为void
页: [1]
查看完整版本: 关于ucos-ii中的任务建立的参数问题