带参数的函数中有一行语句"(void)某参数;",这样写有什么用?
如图:函数的第一个参数是 UCHAR ucSlaveAddress
在函数中 有一行:( void )ucSlaveAddress;
请问这样写有什么用?
参数ucSlaveAddress实际上没有用到,( void )ucSlaveAddress这样写可以避免编译器发出参数未使用的警告。 Zphoenix 发表于 2015-11-13 11:44
参数ucSlaveAddress实际上没有用到,( void )ucSlaveAddress这样写可以避免编译器发出参数未使用的警告。 ...
二楼正解... 讲究一点会搞个宏定义,可读性好一些,像这样:
#define UNUSED_VARIABLE(X)((void)(X))
#define UNUSED_PARAMETER(X) UNUSED_VARIABLE(X)
/**@brief Function for handling the Disconnect event.
*
* @param p_bas Battery Service structure.
* @param p_ble_evt Event received from the BLE stack.
*/
static void on_disconnect(ble_bas_t * p_bas, ble_evt_t * p_ble_evt)
{
UNUSED_PARAMETER(p_ble_evt);
p_bas->conn_handle = BLE_CONN_HANDLE_INVALID;
}
Zphoenix 发表于 2015-11-13 11:44
参数ucSlaveAddress实际上没有用到,( void )ucSlaveAddress这样写可以避免编译器发出参数未使用的警告。 ...
二楼+1~~~~~ 又学到一招 又学到一招。。。 ucSlaveAddress = ucSlaveAddress; 散装805 发表于 2015-11-13 12:42
ucSlaveAddress = ucSlaveAddress;
这个方法难过可行吗? liaihua1997 发表于 2015-11-13 12:55
这个方法难过可行吗?
ucos任务里就是这样用法,pdata = pdata; 古二真 古二真 看完别人的正解突然间不明白参数都不用为神马还要多写一个形参。。。。 Lu.Shi 发表于 2015-11-13 14:27
看完别人的正解突然间不明白参数都不用为神马还要多写一个形参。。。。
同样感到疑惑 又多学了一招了~ 又学到一招。。。 学习了。。 ucos里面都是:pData = pData; 学习了,谢谢。 {:lol:}之前还没注意这些是干啥的 学习了 在操作系统中都这样使用 Lu.Shi 发表于 2015-11-13 14:27
看完别人的正解突然间不明白参数都不用为神马还要多写一个形参。。。。
有时候函数签名是被规定好的,类似OOP中接口的概念
比较常见的应用就是Callback函数,你也许在函数体内不使用某参数,但是参数数量和类型必须是正确的
页:
[1]