static void llist_dtor(void *user, void *element)
{
(void)user;
(void)element;
/* Do nothing */
}
这是一个无操作函数吗?那么为什么需要进行类型转换?将NULL作为其参数之一可以吗?
static void llist_dtor(void *user, void *element)
{
(void)user;
(void)element;
/* Do nothing */
}
这是一个无操作函数吗?那么为什么需要进行类型转换?将NULL作为其参数之一可以吗?
这确实是一个空操作。将参数转换为 (void)
是为了避免一些编译器出现“参数从未使用”的警告(虽然转换被优化掉了,但参数仍然被视为“已使用”)。
你可以传递 NULL
,因为这些参数都会被忽略。
是的,这是一个无操作函数。
强制类型转换是一种常见的技巧,用于防止编译器抱怨未使用的参数。
void
转换行被放置在那里以避免“未使用参数”的警告。对于gcc,请在页面中搜索“unused”:http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
然而,如果这是C++而不是C,我可能会稍微不同地编写它。static void llist_dtor( void * /* user */, void * /* element */ )
{
/* Do nothing */
}
那不是无操作。这样告诉编译器忽略这两个参数。