kv2004 发表于 2015-11-13 11:38:16

带参数的函数中有一行语句"(void)某参数;",这样写有什么用?

如图:
函数的第一个参数是 UCHAR ucSlaveAddress
在函数中 有一行:( void )ucSlaveAddress;
请问这样写有什么用?

Zphoenix 发表于 2015-11-13 11:44:28

参数ucSlaveAddress实际上没有用到,( void )ucSlaveAddress这样写可以避免编译器发出参数未使用的警告。

crazydtone 发表于 2015-11-13 11:54:05

Zphoenix 发表于 2015-11-13 11:44
参数ucSlaveAddress实际上没有用到,( void )ucSlaveAddress这样写可以避免编译器发出参数未使用的警告。 ...

二楼正解...

gamalot 发表于 2015-11-13 12:07:34

讲究一点会搞个宏定义,可读性好一些,像这样:

#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;
}

yick 发表于 2015-11-13 12:18:39

Zphoenix 发表于 2015-11-13 11:44
参数ucSlaveAddress实际上没有用到,( void )ucSlaveAddress这样写可以避免编译器发出参数未使用的警告。 ...

二楼+1~~~~~

duxingkei 发表于 2015-11-13 12:31:14

又学到一招

gujiamao_love 发表于 2015-11-13 12:31:35

又学到一招。。。

散装805 发表于 2015-11-13 12:42:49

ucSlaveAddress = ucSlaveAddress;

liaihua1997 发表于 2015-11-13 12:55:52

散装805 发表于 2015-11-13 12:42
ucSlaveAddress = ucSlaveAddress;

这个方法难过可行吗?

散装805 发表于 2015-11-13 13:09:30

liaihua1997 发表于 2015-11-13 12:55
这个方法难过可行吗?

ucos任务里就是这样用法,pdata = pdata;

wq_601840968 发表于 2015-11-13 13:41:42

古二真

wq_601840968 发表于 2015-11-13 13:42:09

古二真

Lu.Shi 发表于 2015-11-13 14:27:31

看完别人的正解突然间不明白参数都不用为神马还要多写一个形参。。。。

memory4597 发表于 2015-11-13 14:52:12

Lu.Shi 发表于 2015-11-13 14:27
看完别人的正解突然间不明白参数都不用为神马还要多写一个形参。。。。

同样感到疑惑

bailangcn 发表于 2015-11-13 16:55:22

又多学了一招了~

eliterxzgxu 发表于 2015-11-13 17:36:40

又学到一招。。。

libc0607 发表于 2015-11-13 19:07:54

学习了。。

wader 发表于 2015-11-13 20:00:33

ucos里面都是:pData = pData;

monkey.liu 发表于 2015-11-13 22:52:30

学习了,谢谢。

leijiayou 发表于 2015-11-13 23:14:42

{:lol:}之前还没注意这些是干啥的          学习了

596142041 发表于 2015-11-13 23:19:14

在操作系统中都这样使用

gamalot 发表于 2015-11-14 02:42:36

Lu.Shi 发表于 2015-11-13 14:27
看完别人的正解突然间不明白参数都不用为神马还要多写一个形参。。。。

有时候函数签名是被规定好的,类似OOP中接口的概念

比较常见的应用就是Callback函数,你也许在函数体内不使用某参数,但是参数数量和类型必须是正确的
页: [1]
查看完整版本: 带参数的函数中有一行语句"(void)某参数;",这样写有什么用?