zigbee协议栈有一句代码不理解
时间:10-02
整理:3721RD
点击:
在看Zstack代码里面经常看到这样类代码,在函数参数前加一个void,下面举了一个例子
在uint16 GenericApp_ProcessEvent( uint8 task_id, uint16 events )函数里面就有这么一句代码
(void)task_id; // Intentionally unreferenced parameter
不知道这是什么意思,请帮忙解答一下,谢谢。
在uint16 GenericApp_ProcessEvent( uint8 task_id, uint16 events )函数里面就有这么一句代码
(void)task_id; // Intentionally unreferenced parameter
不知道这是什么意思,请帮忙解答一下,谢谢。
看注释就知道啦,故意引用的参数,目的是为了使任务和任务ID一起,好看
调用一下,防止报警
能讲详细的点吗?不太明白,给一些相关知识的网站也可以,谢谢
一般(void *)的是用于强制转换指针的意味,但是z-stack里的(void)有种解释是如上楼说的:避免警告,相当于task_id=task_id; 不编译成指令。(呵呵—但我用注释消去次句后,并无警告出现...)
纠正一下楼上,这句是 故意不引用的参数,没有引用到,可能有其他指示作用
如果编译报警等级选择很高,在函数的形参未在函数中使用时也会报警,编译时给你个warning,当然本身这个warning无伤大雅,你可以忽略他。但在一些强迫症程序员眼里,一个warning都不想留下的情况,就必须使用(void)param,来欺骗编译器有用到这个形参,事实上这句话不会产生任何代码的。
一句话: 消除编译告警!
学习了
学习了