void *p_arg和(void)p_arg是一个什么东西,看不明白
时间:10-02
整理:3721RD
点击:
想问一下,下面程序中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;
这句对自己赋值有什么意义?
* 函数名: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;
这句对自己赋值有什么意义?
void *p_arg是万能型指针,由函数内部强制转为某个具体类型的指针。
(void)p_arg;表示暂时不用该参数,防止编译器告警
吴坚鸿大师说,这个指针你根本不用学。吴大师干了十年从来都没用过指针!
void *p_arg是无类型指针?也就是任意类型指针吗?
无类型指针可以被强制转换成任何类型的指针。任何类型的指针也可以强制转换成无类型指针。至于这个指针到底指向什么,可以由你自己决定。
在很多程序中看到这句p_arg=p_arg;
这句只是为了避免在某些编译器中出现不必要的警告。 uC/OS-II 操作系统中经常出现这种情况。
(void)p_arg;表示暂时不用p_arg,防止编译器告警?
那么在很多程序中看到这句p_arg=p_arg;这一句有什么作用呢?
(void)p_arg;表示暂时不用p_arg,防止编译器告警?
这句p_arg=p_arg;这一句为什么能防止警告呢?
从这个角度看,效果一样,当然,有的编译器可以直接优化掉这个无意义的语句