是否有充分的理由说明为什么在函数中只有一个return语句是更好的做法?
或者,一旦逻辑正确就可以从函数返回,这意味着函数中可能有很多返回语句?
有问题关于使用exitC++中.答案讨论主要是因为RAII不是好主意,例如,如果exit在代码中某处调用,则不会调用对象的析构函数,因此,如果例如析构函数是为了将数据写入文件,则不会发生这种情况,因为没有调用析构函数.
我感兴趣的是C中的这种情况.类似的问题是否也适用于C?我想在C中我们不使用构造函数/析构函数,C中的情况可能会有所不同.所以exit在C中使用是否可以?
我已经看到了下面的函数,我觉得在某些情况下可以使用它,但是如果我们在C中使用类似的问题感兴趣exit,如上面用C++所述?(这将使使用下面的功能不是一个好主意.).
void die(const char *message)
{
if(errno) {
perror(message);
} else {
printf("ERROR: %s\n", message);
}
exit(1);
}
Run Code Online (Sandbox Code Playgroud) 有人可以解释(最好用简单的英语)如何std::flush工作?
谢谢.
我如何退出C++程序.调用哪个函数来结束程序以及该方法采用哪些值?
为了澄清我想从我的代码中退出C++程序.我可能想要退出该程序main功能之外的程序.
我正在读这个问题并且有一个答案解释了为什么使用exit()是坏的,因为:
我应该澄清我正在使用Qt,所以代码已经有点"复杂",因为我正在利用信号和插槽.话虽这么说,对于问题#1,我看到它与#2有关,但我的代码目前试图避免使用,exit()因为我被告知它会使我的代码看起来像一团糟,但避免exit使它变得一团糟.我有一些功能,不需要返回任何东西,返回东西.例如,当我有用户注册并且他们的用户名已经存在时,而不是仅仅exit()在告知用户注册失败后调用(这是在这种情况下所需的行为)我返回false到一个函数然后返回false到另一个函数然后返回false到然后我的main检查该函数是返回true还是false,如果返回false则返回0.这样可以避免exit()代码干净.
对于第三个问题,不使用exit(0)告诉操作系统该程序是否已完成运行并且操作系统将自行释放该内存?我运行了一个测试用例,exit(0)当我按下一个按钮时,该过程从进程列表中删除并释放内存,那为什么这也是一个问题呢?这似乎是一个彻头彻尾的错误陈述,至少在Windows上.
一般来说,我有一些函数step1 step2......并且它们被依次调用:
int main()
{
...
step1(); // something wrong detected and need to break out of the whole program
step2();
step3();
...
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能摆脱step1并跳过所有其余代码来终止main()函数?
目前我只能想到设置一个全局变量,比如bool isErr一个标志,这样
step1(); // error detected and isErr is set to 1 inside step1()
if (isErr)
return;
step2();
...
Run Code Online (Sandbox Code Playgroud)
是否有更好或更“规范”的方法?
顺便说一句,我听说这goto很糟糕,所以我放弃了它:)