关于ucos-ii中的任务建立的参数问题
建立任务的函数原型为:INT8U OSTaskCreate(void( *task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio) 其中的参数void( *task)(void *pd)是什么意思啊,我只是知道这个参数代表一个函数指针,能具体解释解释这个语法吗? 是的. 这个参数代表一个函数指针void( *task)(void *pd)
应该这么解释吧, void 的 pd 指针强制为 返回 void 类型的函数指针. 这样看,一个函数指针,与它指向的函数的原型,区别是“指针名”是“函数名”前加*,然后用圆括号括起。
例如:
void task(void*); // 函数原型,函数名为 task。
void (*task)(void*); // 函数指针,指针名为 task。
不管是函数原型或函数指针在声明和/或定义时,函数类型的参数是可省略的,所以:
void (*task)(void*) 和 void (*task)(void* pd) 是一样的。 void 修饰变量时表示它的类型为任意,括号外边的void表示函数指针变量的类型为任意,括号里面的void表示任意类型的指针作为参数。。。。。。 强制转换为指向任务的函数名... mk 二楼说的貌似不对啊.
pd不是被强制了,而是被指向的函数所带的参数.
void (*task)(void*)
这样理解:task是个指向函数的指针,该函数带个void*参数,返回值为void
页:
[1]