這是在聲明時初始化變量的最佳做法。w8004編譯器警告BDS6 c/C++
int TMyClass::GetValue()
{
int vStatus = OK;
// A function returns a value
vStatus = DoSomeThingAndReturnErrorCode();
if(!vStatus)
//Do something
else
return(vStatus);
}
在調試模式,這樣int vStatus = OK;
一個語句引起調試模式的構建過程中沒有問題。
同樣,當構建以發佈模式,拋出一個警告說:
w8004:「VSTATUS」被分配一個是從未使用過的值。
而且,我在同樣的功能進一步使用相同的變量了我的代碼,這樣if(!vStatus)
,也是我回報的return(vStatus);
值當我看着網頁的pointers on this debug Vs Release,編譯器期望你在聲明它的時候初始化你的變量。
我正在使用Borland開發人員工作室6與Windows 2003服務器。
任何指針都會幫助我理解這個問題。
感謝
拉吉
推遲變量的定義(不是聲明,BTW)是最好的實踐,直到你有一些東西要初始化爲止。看Glen的回答。這樣你就沒有未初始化的變量,並且你不需要用一些虛擬值來初始化變量,以便稍後重寫它們。 – sbi 2009-09-09 13:42:49
REAL最佳實踐是在具有初始化值的位置聲明值,而不是在更早的位置。你早先宣佈vStatus一行。因此,你假設一行將是「OK」。 – MSalters 2009-09-09 13:43:02