为什么c局部变量需要转换为void?

时间:2013-02-28 09:36:34

标签: c++

最近我正在github上学习一个项目,我发现了这个。为什么到底有一个“(void)n”?

void CurrentThread::cacheTid()
{
  if (t_cachedTid == 0)
  {
    t_cachedTid = detail::gettid();
    int n = snprintf(t_tidString, sizeof t_tidString, "%5d ", t_cachedTid);
    assert(n == 6); (void) n;
  }
}

2 个答案:

答案 0 :(得分:7)

(void)n实际上是无操作。但是,阻止编译器在关闭断言并编译出前面的assert()时发出“未使用的变量”警告。

答案 1 :(得分:3)

这种结构抑制了关于声明的警告,但从未使用变量