void *p_arg和(void)p_arg是一个什么东西,看不明白

2019-07-14 21:11发布

想问一下,下面程序中void *p_arg和(void)p_arg是一个什么样的东西
* 函数名:Task_LED
* 描述  : LED流水灯        
* 输入  :无
* 输出  : 无
*/
void Task_LED(void *p_arg)
{
        OS_ERR err;
    (void)p_arg;                                // 'p_arg' 并没有用到,防止编译器提示警告
        
    while (1)
    {
        LED1( ON );
        OStimeDlyHMSM(0, 0,1,0,OS_OPT_TIME_HMSM_STRICT,&err);
        LED1( OFF);

        LED2( ON );
        OSTimeDlyHMSM(0, 0,1,0,OS_OPT_TIME_HMSM_STRICT,&err);
        LED2( OFF);

        LED3( ON );
        OSTimeDlyHMSM(0, 0,1,0,OS_OPT_TIME_HMSM_STRICT,&err);
        LED3( OFF);
    }
}

void *p_arg是无类型指针?也就是任意类型指针吗?
那(void)p_arg;   又是什么意思?
在很多程序中看到这句p_arg=p_arg;
这句对自己赋值有什么意义?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
friend0720
1楼-- · 2019-07-15 05:44
void *p_arg是无类型指针?也就是任意类型指针吗?

无类型指针可以被强制转换成任何类型的指针。任何类型的指针也可以强制转换成无类型指针。至于这个指针到底指向什么,可以由你自己决定。

在很多程序中看到这句p_arg=p_arg;

这句只是为了避免在某些编译器中出现不必要的警告。 uC/OS-II 操作系统中经常出现这种情况。
sushaowen
2楼-- · 2019-07-15 08:45
runsunlg 发表于 2016-3-9 22:49
void *p_arg是万能型指针,由函数内部强制转为某个具体类型的指针。
(void)p_arg;表示暂时不用该参数,防止编译器告警

(void)p_arg;表示暂时不用p_arg,防止编译器告警?
那么在很多程序中看到这句p_arg=p_arg;这一句有什么作用呢?
sushaowen
3楼-- · 2019-07-15 09:24
friend0720 发表于 2016-3-9 22:49
void *p_arg是无类型指针?也就是任意类型指针吗?

无类型指针可以被强制转换成任何类型的指针。任何类型的指针也可以强制转换成无类型指针。至于这个指针到底指向什么,可以由你自己决定。

(void)p_arg;表示暂时不用p_arg,防止编译器告警?
这句p_arg=p_arg;这一句为什么能防止警告呢?
runsunlg
4楼-- · 2019-07-15 15:16
 精彩回答 2  元偷偷看……

一周热门 更多>