最近我正在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;
}
}
答案 0 :(得分:7)
(void)n
实际上是无操作。但是,将阻止编译器在关闭断言并编译出前面的assert()
时发出“未使用的变量”警告。
答案 1 :(得分:3)
这种结构抑制了关于声明的警告,但从未使用变量