2013-02-28 68 views
2

最近我在github上學習一個項目,我發現了這個。爲什麼最後有一個「(void)n」?爲什麼c局部變量需要轉換爲void?

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; 
    } 
} 

回答

7

(void)n實際上是無操作的。但是,阻止斷言關閉時編譯器發出「未使用的變量」警告,並編譯出前面的assert()

3

該構造抑制關於聲明的警告,但從未使用變量

相關問題