以下代码有什么作用?

时间:2010-10-21 10:05:07

标签: c

static void llist_dtor(void *user, void *element)
{
  (void)user;
  (void)element;
  /* Do nothing */
}

是无操作功能吗?然后为什么要完成铸造?可以将NULL作为其参数之一传递吗?

4 个答案:

答案 0 :(得分:14)

这确实是一种无操作。对(void)的强制转换是为了避免使用某些编译器获得“参数从未使用过”警告(强制转换被抛弃,但参数仍被视为“已使用”)。

您可以传递NULL,因为无论如何都会忽略这些参数。

答案 1 :(得分:4)

是的,这是一个无操作功能。

强制转换是防止编译器抱怨未使用参数的常用技巧。

答案 2 :(得分:3)

是的,这是一个无操作函数,并且放置void转换行以避免“未使用的参数”警告。对于gcc,请在页面中搜索“unused”:http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

然而,如果它是C ++而不是C ,我可能会以不同的方式写出

static void llist_dtor( void * /* user */, void * /* element */ )
{
  /* Do nothing */
}

请注意,变量名称已注释掉。

答案 3 :(得分:0)

这不是无操作。就像那样,你告诉编译器忽略这两个参数。