11-方枪枪(43825171) 19:10:04 是一个函数,做为OSTaskStkInit的参数。VOID不是表示返回空指针,而是表示返回不确定的指针。随 task的返回指针类型而定。 克尔(342864821) 19:11:02 也就是说任务返回的类型不同了? 11-方枪枪(43825171) 19:11:25 是啊,可以不同。 克尔(342864821) 19:11:57 但是void (*task)(void *pd)又是怎么回事? 11-方枪枪(43825171) 19:14:44 该函数可能类似于一个过程。因为参数*pd为VOID类型,所以经过该函数的处理可能是和*PD一致的类型。 11-方枪枪(43825171) 19:14:59 是一致的数据结构。 克尔(342864821) 19:15:55 可是这是一个参数: OS_STK *OSTaskStkInit (void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt) 克尔(342864821) 19:16:33 这是函数OSTaskStkInit的第一个参数 11-方枪枪(43825171) 19:17:11 对,task的返回值作为OSTaskStkInit的参数。 11-方枪枪(43825171) 19:18:21 这几个函数估计都是一个过程,不对数据类型做修改。 克尔(342864821) 19:18:37 pd是? !爱斤欠(568449325) 19:18:40 不知道克尔大哥哪里搞不明白,这个我也明白的,哈哈。 11-方枪枪(43825171) 19:19:48 pd 是 task函数的参数,task函数的返回值又作为OSTaskStkInit的参数。 !爱斤欠(568449325) 19:21:31 void 说明返回一个不确定值,道是没听说过,向您学习了。 11-方枪枪(43825171) 19:21:55 不确定类型。 克尔(342864821) 19:22:03 * void Task(void *data) * { * . * . * while (1) { * OSTimeDly(1); * if (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ) { * Release any owned resources; * De-allocate any dynamic memory; * OSTaskDel(OS_PRIO_SELF); * } * } * } PIZZA(86827291) 19:22:14 11-方枪枪(43825171) 19:22:14 不确定类型。 !爱斤欠(568449325) 19:22:16 哦,不确定类型。 !爱斤欠(568449325) 19:23:05 那如果不返回值该怎么写? 11-方枪枪(43825171) 19:23:31 你是不是像void main()这样的定义? !爱斤欠(568449325) 19:23:38 对 !爱斤欠(568449325) 19:23:53 做为参数 克尔(342864821) 19:24:51 俺们先看看潭老师的书吧 !爱斤欠(568449325) 19:25:13 那本书肯定没有 11-方枪枪(43825171) 19:25:20 == !爱斤欠(568449325) 19:25:25 ?? 克尔(342864821) 19:26:02 如果把指向函数的指针作为另一个函数的参数改怎么写呀 11-方枪枪(43825171) 19:26:09 http://dev.yesky.com/340/2517340.shtml 11-方枪枪(43825171) 19:26:15 看这里。 !爱斤欠(568449325) 19:26:16 如果不返回函数值的函数指针作为参数该怎么写呢》 克尔(342864821) 19:28:14 比如把指向 void a(void *c) 的指针作为 int t(----)的参数,那么如何定义t()? 11-方枪枪(43825171) 19:28:45 !爱斤欠(568449325) 19:26:16 如果不返回函数值的函数指针作为参数该怎么写呢》
你可以不写类型,编译也能通过,最多警告一下。 !爱斤欠(568449325) 19:29:08 这样呀,明白了。 克尔(342864821) 19:29:17 呵呵 这个我刚看过了 在 克尔(342864821) 19:29:32 在gogle上第一个 11-方枪枪(43825171) 19:29:52 加void是规范的写法。 !爱斤欠(568449325) 19:29:53 t((*a)(void *c)) !爱斤欠(568449325) 19:30:07 t((*a)(void *c)___) !爱斤欠(568449325) 19:30:19 是吧 11-方枪枪(43825171) 19:30:40 规则四如果函数的参数可以是任意类型指针,那么应声明其参数为void * 克尔(342864821) 19:31:09 void (*task)(void *pd)岂不应该是(*task)(void *pd)了? 11-方枪枪(43825171) 19:31:27 http://dev.yesky.com/340/2517340_1.shtml 克尔(342864821) 19:31:31 明白了 !爱斤欠(568449325) 19:31:33 你怎么还不明白呢 克尔(342864821) 19:31:35 谢谢 11-方枪枪(43825171) 19:32:00 我说了看我发的网址。 克尔(342864821) 19:32:08 谢谢 !爱斤欠(568449325) 19:32:37 多谢方--了 克尔(342864821) 19:32:54 规则四如果函数的参数可以是任意类型指针,那么应声明其参数为void *
典型的如内存操作函数memcpy和memset的函数原型分别为:
void * memcpy(void *dest, const void *src, size_t len); void * memset ( void * buffer, int c, size_t num ); 11-方枪枪(43825171) 19:33:09 所以void定义的都是* 11-方枪枪(43825171) 19:33:20 都是指针。
|