如果满足某个条件,我希望我的C++代码停止运行,但我不知道该怎么做.因此,只要if声明为真,就可以在任何时候终止代码,如下所示:
if (x==1)
{
kill code;
}
Run Code Online (Sandbox Code Playgroud) 有人可以解释(最好用简单的英语)如何std::flush工作?
谢谢.
在函数中使用return 0和exit (0)使用时有什么区别吗?如果是,我什么时候应该使用return 0或exit (0)在功能?
我正在读这个问题并且有一个答案解释了为什么使用exit()是坏的,因为:
我应该澄清我正在使用Qt,所以代码已经有点"复杂",因为我正在利用信号和插槽.话虽这么说,对于问题#1,我看到它与#2有关,但我的代码目前试图避免使用,exit()因为我被告知它会使我的代码看起来像一团糟,但避免exit使它变得一团糟.我有一些功能,不需要返回任何东西,返回东西.例如,当我有用户注册并且他们的用户名已经存在时,而不是仅仅exit()在告知用户注册失败后调用(这是在这种情况下所需的行为)我返回false到一个函数然后返回false到另一个函数然后返回false到然后我的main检查该函数是返回true还是false,如果返回false则返回0.这样可以避免exit()代码干净.
对于第三个问题,不使用exit(0)告诉操作系统该程序是否已完成运行并且操作系统将自行释放该内存?我运行了一个测试用例,exit(0)当我按下一个按钮时,该过程从进程列表中删除并释放内存,那为什么这也是一个问题呢?这似乎是一个彻头彻尾的错误陈述,至少在Windows上.
linux gcc 4.4.1 C99
我只是想知道使用以下技术是否有任何优势.我注意到我正在阅读一些代码,我正在读取退出编号的值,这个代码片段中显示了这个值.
/* This would happen in 1 function */
if(test condition 1)
{
/* something went wrong */
exit(1);
}
if(test condition 2)
{
/* something went wrong with another condition*/
exit(2);
}
Run Code Online (Sandbox Code Playgroud)
或者执行以下操作并返回:
/* This would happen in 1 function */
if(test condition 1)
{
/* something went wrong */
return;
}
if(test condition 2)
{
/* something went wrong with another condition*/
return;
}
Run Code Online (Sandbox Code Playgroud) 一般来说,我有一些函数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很糟糕,所以我放弃了它:)