C++ 使用条件语句激活函数的目的是什么?
激活这样一个函数的目的是什么C++ 使用条件语句激活函数的目的是什么?,c++,function,C++,Function,激活这样一个函数的目的是什么 if(!FUNCTION()){ return(1); } 为什么不像这样调用函数呢 FUNCTION(); 虽然我在初始化应用程序时使用了条件语句,并且实际上根本不会造成系统混乱,但是仅仅调用函数()会不会更快 我知道条件也有一个返回值1,但是这个返回值不是也没有必要吗 我在这个片段中这样使用: int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCMDli
if(!FUNCTION()){
return(1);
}
为什么不像这样调用函数呢
FUNCTION();
虽然我在初始化应用程序时使用了条件语句,并且实际上根本不会造成系统混乱,但是仅仅调用函数()
会不会更快
我知道条件也有一个返回值1,但是这个返回值不是也没有必要吗
我在这个片段中这样使用:
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCMDline, int nCmdShow){
//HWND initialization
if(!InitMainWindow(hInstance, nCmdShow)){
return 0;
}
其目的是检查
函数
的返回值。大概,函数
是这样声明的:
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;
}
错误代码。如果
函数
返回的不是0,则包装函数将返回1,表示错误。这对于使用init()
函数非常方便,例如if(init()!=S_OK)printf(“error”)代码>非常常见。一点C知识解释了为什么`!=S_OK`很容易在if语句中被忽略。@Shark,他写道:“if(!FUNCTION())”,因此只有当FUNCTION()返回零时才会返回1。@JimRhodes与大多数人/开发人员使用负错误代码是一样的。这就是。在一个比较现实的例子上写这篇文章做得很好+1.