您好,
我正在使用一些C代码,作者使用了我不熟悉的语法。通过以下对函数的调用:
(void) msleep(&gActivationCount, NULL, PUSER,
"com_apple_dts_kext_KauthORama.RemoveListener", &oneSecond);
似乎作者正在将返回值转换为void或只是简单地说明函数原型(我说可能因为我无法将函数解析为它的原型),对于返回值说。这不等于:
msleep(&gActivationCount, NULL, PUSER,
com_apple_dts_kext_KauthORama.RemoveListener", &oneSecond);
谢谢,
斯科特
答案 0 :(得分:4)
对于lint
和发出警告的编译器,这是一个陈旧的(并且非常讽刺)技巧,明确标记您忽略函数返回值的意图。忘了你曾经看过它。在现代编译器中,你必须不遗余力地打开这个警告,有些(例如gcc)提供扩展来标记忽略返回值是危险的特定函数。
答案 1 :(得分:3)
他将结果转换为void以明确丢弃该值,但更常见的是删除对未使用结果的警告(首先可能不应该忽略!)
当函数已经返回void时,转换为(void)更加毫无意义。
旧的编译器似乎过于急于报告未使用的值 - 现在,如果你有一个真正必须检查的函数,它需要__attribute__((warn_unused_result))
。