static void llist_dtor(void *user, void *element)
{
(void)user;
(void)element;
/* Do nothing */
}
是无操作功能吗?然后为什么要完成铸造?可以将NULL作为其参数之一传递吗?
答案 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)
这不是无操作。就像那样,你告诉编译器忽略这两个参数。