使用条件语句激活函数的目的是什么

What is the purpose of using conditional statements to activate a function?

本文关键字:是什么 激活函数 语句 条件      更新时间:2023-10-16

激活这样的函数的目的是什么

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可能是一个做不止一件事的函数:

  1. 它创建了主窗口
  2. 它一直等待,直到用户使用完主窗口
  3. 主窗口关闭后,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;
}