【问题标题】:What is (void) with () in C [duplicate]C中的()和()是什么[重复]
【发布时间】:2020-10-13 23:37:24
【问题描述】:

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

(void) myFunc();

【问题讨论】:

  • 您应该添加更多上下文。函数的其余部分是什么样的?至少让我们知道它返回了什么。

标签: c void


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    (void) 具有强制转换操作的形式,但强制转换为 void(注意:不是void *)通常没有用处。

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

    由于这种符号的历史滥用,一些编译器会警告你不要使用某些函数的值(例如mallocreadwrite即使你把@ 987654331@在他们面前,所以它没有以前那么有用了。

    【讨论】:

    • “由于这种符号的历史滥用”是什么意思?
    • @Zircoz 有一些 C 库函数,调用它们并忽略返回值几乎总是一个错误,但它是相对常见的 不方便 做某事建设性的返回值。所以懒惰的程序员会编写代码,例如(void) write(...) 和编译器开发人员决定忽略 (void) 并用“你应该使用该值”警告来打击他们。如果您想了解更多信息,请提出一个新问题。
    猜你喜欢
    • 2012-07-23
    • 2011-04-03
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 2011-12-28
    相关资源
    最近更新 更多