2011-05-15 67 views
6

C++ stdlib中使用哪個函數退出程序執行狀態碼?退出具有狀態碼的C++程序

在Java中,有:

System.exit(0) 
+6

-1,快速的Web搜索將給予您在任何時間應答。或者即使你簡單地猜到了答案。 (我會給你一個提示:函數叫'exit') – asveikau 2011-05-15 03:39:21

回答

10

假設你只有一個線程:

#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 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; 
} 
+5

請注意,'return'不會退出程序,除非該函數恰好是'main',而'exit'會從任何函數中終止程序在其中被稱爲。 – 2011-05-15 03:52:04

+0

我已經看到,在一些從'main'返回的系統上(大部分類Unix平臺)也會終止其他線程。我不確定C++ 0x需要說些什麼,但是直到最近線程並不是任何C或C++語言標準的一部分,您纔會看到各種行爲。無論如何,提問者都非常明確地要求「退出」。 – asveikau 2011-05-15 03:55:25

0

除了其他答覆,你還可以調用中止,終止,quick_exit(退出而不調用析構函數,解除分配等;因此名稱)

終止呼叫在默認情況下中止,但可以調用您設置的任何終止處理程序。中止和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提供)

Addi可以將at_exit作爲at_quick_exit的等價函數。

不可否認,我並不是那麼熟悉set_terminate並終止,因爲我不會自己調用它們,但是我想如果你願意,可以使用quick_exit作爲終止處理程序;或自定義的(但請不要在此引用我)。

-1

在C++中,你可以使用退出(0) 例如:

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