什么是 (void) 和 () 在 C 中

Pac*_*Col 6 c void

最近发现了这行代码,但是不知道带()的void是什么意思。有人能帮我吗 ?谢谢

(void) myFunc();
Run Code Online (Sandbox Code Playgroud)

zwo*_*wol 8

(void)具有强制转换操作的形式,但强制转换为void(注意:不是 to void *)通常不是一件有用的事情。

但是,在这种情况下,这(void) myFunc();意味着myFunc返回一个值,并且编写这行代码的人都想丢弃该值,并且不希望编译器对此有所抱怨,和/或希望向代码的未来读者明确说明他们故意丢弃价值。在生成的代码中,与前面什么都没有的(void) myFunc();效果完全一样myFunc();

由于这个符号的历史滥用,一些编译器会警告你不要使用某些函数的值(例如malloc, read, write),即使你放在(void)它们前面,所以它没有以前那么有用了。

  • @Zircoz有一些C库函数,调用它们并忽略返回值几乎总是一个错误,但是对返回值做一些建设性的事情是相对常见的_不方便_。因此,懒惰的程序员会编写“(void) write(...)”等代码,而编译器开发人员决定忽略“(void)”,并用“你应该使用该值”警告来打他们的头。如果您想了解更多信息,请提出一个新问题。 (3认同)

Fid*_*its 5

myFunc可能是returns什么。添加(void)到函数调用中(void)myFunc()是一种自我记录代码的方法。它的意思是,“我知道myFunc return一个值,但我不在乎它是什么。”