退出带状态的c ++程序

时间:2011-05-15 03:37:18

标签: c++ exit

在C ++ stdlib中使用哪个函数退出程序执行状态代码?

在Java中,有:

System.exit(0)

3 个答案:

答案 0 :(得分:12)

假设您只有一个帖子:

#include <iostream>

int main()
{
    std::cout << "Hello, World!\n";

    return(0);
    // PROGRAM ENDS HERE.

    std::cout << "You should not see this.\n";

    return(0);
}

输出:

Hello, World!

return(0);可以放在您喜欢的任何地方 - 它将结束int main(),从而结束您的计划。


或者,您可以从任何您喜欢的地方拨打exit(EXIT_SUCCESS); or exit(EXIT_FAILURE);

/* exit example */
#include <stdio.h>
#include <stdlib.h>

int main ()
{
    FILE * pFile;
    pFile = fopen("myfile.txt", "r");

    if(pFile == NULL)
    {
        printf("Error opening file");
        exit (1);
    }
    else
    {
        /* file operations here */
    }

    return 0;
}

答案 1 :(得分:1)

除了其他响应之外,您还可以调用abort,terminate,quick_exit(退出而不调用析构函数,取消分配等;因此名称)

默认终止调用abort,但可以调用你设置的任何终止处理程序。

abort和set_terminate的示例用法(用于终止使用的处理程序),可以调用quick_exit(参见示例#2)

// set_terminate example
#include <iostream>       // std::cerr
#include <exception>      // std::set_terminate
#include <cstdlib>        // std::abort

void myterminate () {
  std::cerr << "terminate handler called\n";
  abort();  // forces abnormal termination
}

int main (void) {
  std::set_terminate (myterminate);
  throw 0;  // unhandled exception: calls terminate handler
  return 0;
}

quick_exit / at_quick_exit示例:

/* at_quick_exit example */
#include <stdio.h>      /* puts */
#include <stdlib.h>     /* at_quick_exit, quick_exit, EXIT_SUCCESS */

void fnQExit (void)
{
  puts ("Quick exit function.");
}

int main ()
{
  at_quick_exit (fnQExit);
  puts ("Main function: Beginning");
  quick_exit (EXIT_SUCCESS);
  puts ("Main function: End");  // never executed
  return 0;
}

我不完全确定为什么会调用quick_exit但它存在,因此我应该为它提供文档(由http://www.cplusplus.com/reference提供)

此外,可以将at_exit称为at_quick_exit的等价物。

不可否认,我并不熟悉set_terminate并终止,因为我自己没有调用它们,但我猜你可以使用quick_exit作为终止处理程序,如果你想要的话;或者是自定义的(但请不要引用我)。

答案 2 :(得分:-1)

在C ++中,您可以使用exit(0) 例如:

   switch(option){
       case 1: 
         //statement
       break;
       case 2:
        //statement
       exit(0);