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
铸造线放置以避免“未使用的参数”警告。对于海湾合作委员会,在网页搜索“未使用”:http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html
然而,如果它是C++而不是C,我可能会写有点不同的
static void llist_dtor(void * /* user */, void * /* element */)
{
/* Do nothing */
}
注意变量名评论说。
-1,gcc不会编译没有参数名称的C代码。 (虽然适用于C++)。 – 2010-10-22 20:27:21
@Andrew Medico:+1:谢谢你纠正我。大多数情况下,我使用C++并在那里完成了这几次......从来没有想过在C中可能会有所不同。 – Arun 2010-10-22 21:32:03