0

激活这样的功能的目的是什么

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;
}
4

2 回答 2

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在这种情况下,可能是一个功能不止一件事:

  1. 它创建主窗口。
  2. 它一直等到用户使用完主窗口
  3. 主窗口关闭后,InitMainWindow返回

所以在这里你看到调用InitMainWindow可能需要几分钟或几小时才能返回,当它返回时,程序就该退出了。

另一方面,InitMainWindow可能就这么简单——它只是初始化主窗口并立即返回。InitMainWindow在这种情况下,如果由于某种原因失败,我们不想开始使用该窗口。

于 2013-07-16T15:57:34.583 回答
-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;
}
于 2013-07-16T15:58:56.940 回答