【问题标题】:Please Explain The Meaning of Following Cast [duplicate]请解释以下演员的含义[重复]
【发布时间】:2011-11-18 22:18:42
【问题描述】:

可能重复:
Weird use of void

我正在阅读 C 代码并遇到以下内容。有人可以解释一下这是做什么的吗?

static int do_spawn(const char *filename)
{
  (void)filename;
  // todo: fill this in
  return -1;
}

具体来说,(空)文件名是做什么的?

【问题讨论】:

    标签: c casting void


    【解决方案1】:

    编译器有时会抱怨未使用的参数; (void) "cast" 只是一种在 void、无副作用的上下文中使用变量的方法,这样编译器就不会抱怨它“未使用”。

    编辑:正如 rodrigo 在下面指出的那样,编译器警告可以在没有 (void) 前缀的情况下被抑制,但随后可能会出现另一个警告(关于表达式无效)。所以(void)filename 是您可以防止这两个警告的方法。

    【讨论】:

    • 实际上,删除警告不需要强制转换为void。但是没有它,有时会出现另一个关于“表达无效”的警告。 (void) 避免了这种情况。
    • @James:我从来没有在我用过的任何编译器中看到它,但我也很年轻。 :-)
    • @rodrigo:我不知道,谢谢。我将编辑我的答案。
    • gcc -Wall -Wextra 警告unused parameter ‘filename’
    • @KeithThompson:好的,我已经切换到现在时态。我们现在冷静吗? :-)
    【解决方案2】:

    它阻止了关于未使用参数的警告,仅此而已。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 2020-02-08
      相关资源
      最近更新 更多