2

最近我在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;
  }
}
4

2 回答 2

7

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

于 2013-02-28T09:38:16.290 回答
3

此构造抑制有关已声明但从未使用过的变量的警告

于 2013-02-28T09:38:23.643 回答