激活像这样的函数
的目的是什么?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;
}
答案 0 :(得分:1)
目的是检查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
由于某种原因失败,我们不希望开始使用该窗口。
答案 1 :(得分:-1)
以这种方式调用函数允许您将结果提供给类似但更复杂的结构。
例如,假设您有一个功能:
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;
}