[英]What is the purpose of using conditional statements to activate a function?
激活這樣的功能的目的是什么
if(!FUNCTION()){
return(1);
}
為什么不像這樣調用函數
FUNCTION();
盡管我在應用程序的初始化中使用了條件語句,並且實際上根本不會導致系統混亂,但是僅調用FUNCTION()
會不會更快?
我知道有條件的收益也為1,但這不是不必要的收益嗎?
我在此代碼段中像這樣使用它:
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCMDline, int nCmdShow){
//HWND initialization
if(!InitMainWindow(hInstance, nCmdShow)){
return 0;
}
目的是檢查FUNCTION
的返回值。 大概, FUNCTION
聲明如下:
bool FUNCTION();
返回值( bool
)表示成功或失敗的地方。 假設您有一個連接數據庫的函數:
bool ConnectToDatabase();
ConnectToDatabase
會嘗試連接到數據庫,但是在實際代碼中會發生不好的事情,並且功能並不總是成功。 如果我們在較大的上下文中使用此代碼:
ConnectToDatabase();
databasePointer->GetTheTable();
您可以看到我們是否無法連接到數據庫,嘗試附加到數據庫中的表將永遠不會成功,實際上,數據庫指針databasePointer
甚至可能無效。 試圖附加到未連接的數據庫表中的表肯定只能以失敗告終。
因此,在繼續進行假定它們已執行的代碼之前,我們先檢查確保調用的函數能夠達到預期的效果:
if (!ConnectToDatabase())
return false
databasePointer->GetTheTable();
您發布的示例代碼大致相同,但有一些不同:
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCMDline, int nCmdShow){
//HWND initialization
if(!InitMainWindow(hInstance, nCmdShow)){
return 0;
}
在這種情況下, InitMainWindow
可能是一個功能不只是一件事情:
InitMainWindow
返回 因此,在這里您可以看到對InitMainWindow
的調用可能需要幾分鍾或幾小時才能返回,而當返回時,是該程序退出的時候了。
另一方面, InitMainWindow
可能就這么簡單-它只是初始化主窗口並立即返回。 在這種情況下,如果InitMainWindow
由於某種原因失敗,我們就不想開始使用該窗口。
以這種方式調用該函數使您可以將結果輸入類似但更復雜的結構中。
例如,假設您有一個函數:
int somefunc(){
if (!otherfunc())
return 1;
}
然后,您可以將結果輸入另一個if語句。
if (somefunc())
// Do Something meaningful
從技術上講,此代碼有一個錯誤,因為如果InitMainWindow返回非零值,WinMain將沒有返回值,盡管對於主函數通常會忽略該返回值。
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCMDline, int nCmdShow){
//HWND initialization
if(!InitMainWindow(hInstance, nCmdShow)){
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.