2012-03-16 50 views
0

發出「未引用形式參數」警告的原因是什麼?在an existing SO post中,解釋了此警告對於引起程序員注意函數(以防他忘記對參數執行一些操作)有用,並且對代碼維護也很有用(向未來的開發人員發出該信號未被省略,但故意遺漏了)。除了風格問題之外,爲什麼程序員希望對未使用的參數提出警告?如果按值傳遞,這些參數是否被複制?爲什麼「未引用的形式參數」擔心我?

void myFunction(int param) { 
} 
+1

如果通過值傳遞,它們將被複制。 – Mahesh 2012-03-16 11:54:03

+0

你可以擺脫'param',所以你只剩下'void myFunction(int)',雖然這可能會讓人困惑。有時你會看到註釋掉的參數'void myFunction(int/* param * /)',但我不願在C++代碼庫中使用C風格的註釋。 – 2012-03-16 12:50:10

回答

3

爲了防止可能發生的干擾(忘記使用參數),爭取一個更易於維護的代碼足夠的理由。

未被使用的參數被複制的可能的性能影響是另一個原因,但不是主要原因。

1

雖然沒有指定,但我希望在函數定義中省略參數名稱不會更改任何二進制代碼。

僅具有可用功能聲明的編譯單元將不知道是否複製該參數。其他編譯單元可以對函數調用應用正常的優化,任何值得任何salt的優化器都會發現參數在函數的開始處是死的。

因此,我不擔心這裏的表現。純粹的原因是可讀性。

相關問題