【发布时间】:2020-10-13 23:37:24
【问题描述】:
我最近发现了这行代码,但是不知道带()的void是什么意思。 有人能帮我吗 ? 谢谢
(void) myFunc();
【问题讨论】:
-
您应该添加更多上下文。函数的其余部分是什么样的?至少让我们知道它返回了什么。
我最近发现了这行代码,但是不知道带()的void是什么意思。 有人能帮我吗 ? 谢谢
(void) myFunc();
【问题讨论】:
myFunc 可能是returns 的东西。将(void) 添加到函数调用(void)myFunc() 是一种自记录代码的方法。这意味着,“我知道myFuncreturns 是一个值,但我不在乎它是什么。”
【讨论】:
(void) 具有强制转换操作的形式,但强制转换为 void(注意:不是void *)通常没有用处。
不过,在这种情况下,(void) myFunc(); 意味着 myFunc 返回一个值,而编写这行代码的人想要丢弃该值并且不希望编译器对此抱怨,和/或想要让未来的代码读者清楚地知道他们是故意丢弃价值的。在生成的代码中,(void) myFunc();与myFunc();的效果完全一样,前面什么都没有。
由于这种符号的历史滥用,一些编译器会警告你不要使用某些函数的值(例如malloc、read、write)即使你把@ 987654331@在他们面前,所以它没有以前那么有用了。
【讨论】:
(void) write(...) 和编译器开发人员决定忽略 (void) 并用“你应该使用该值”警告来打击他们。如果您想了解更多信息,请提出一个新问题。