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

时间:2013-07-16 15:46:49

标签: c++ 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;
}

2 个答案:

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

  1. 它创建了主窗口。
  2. 等待用户使用主窗口
  3. 主窗口关闭后,InitMainWindow返回
  4. 所以在这里你看到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;
}