2015-10-20 121 views
0

我讀的源代碼的基準工具,在這裏面我看到:C++在聲明後將int轉換爲void類型?

int i, j, ret; (void)j; (void)ret; 

if (!_does_file_exist(str)) { 
    sprintf(cmd, "mkdir -p %s > errorlog.txt", str); 
    ret = system(cmd); // Execute a command on the system 
    (void)ret; 
    } 

是什麼聲明和鑄造整數爲void類型的好處/影響?

這似乎無意義。

回答

3

這是很無意義的。 (可疑的)好處是防止未使用的變量警告。這引出了問題,爲什麼首先聲明變量?

+0

不幸的是,從[this commit](https://github.com/couchbaselabs/ForestDB-Benchmark/commit/c1e8b277199b5d141bc67a8af304ae60a4501e68)上的基準測試中,我想你可能就在那裏。 – slugonamission

+0

我可以看到採取ret變量並繼續檢查返回值。至少現在我知道他們在做什麼:D –

0

這是一種減少未使用的變量警告的古老方式。如果它與當前的編譯目標是外部的,我相信它可能會強制將它們聯繫起來。正確的方法是將其標記爲不使用編譯器喜歡的任何方式(可能會根據autotools或其他設置)。

相關問題