所以,我已經看到了一些線程解釋如何避免未引用參數的警告,例如:根據我如何處理未引用的參數,編譯器會做不同的事情嗎?
Avoid warning 'Unreferenced Formal Parameter'
C++ What is the purpose of casting to void?
但我不知道是編譯器是否會基於什麼不同使用哪種方法。例如,以下三種情況的編譯輸出是否會有所不同?
void Method(int /*x*/)
{
// Parameter is left unnamed
}
void Method(int x)
{
x; // This would be the same as UNREFERENCED_PARAMETER(x);
}
void Method(int x)
{
(void)x; // This would be the same as _CRT_UNUSED(x);
}
我是什麼樣的編譯器會做的角度來看最感興趣的,但如果你超過別人一個辦法強烈地感受到,我很高興聽到這些觀點也是如此。
有趣的是,現在我想知道如果選擇1將使優化的對象,如智能指針而正常情況下調用構造函數/析構函數對。這不會生成未引用的參數警告,但我不知道是否註釋掉參數將避免這些調用。此刻離開我的編譯器(AFC),但如果我後來記得我會測試這個。 – FrolickingFerret