C++ exit用法詳解

2020-07-16 10:04:40
當遇到 main 函數中的 return 語句時,C++ 程式將停止執行。但其他函數結束時,程式並不會停止。程式的控制將返回到函數呼叫之後的位置。然而,有時候會出現一些非常少見的情況,使得程式有必要在 main 以外的函數中終止。要實現這一點,可以使用 exit 函數

當呼叫 exit 函數時,無論是哪個函數包含了該呼叫,都將導致程式停止。下面的程式演示了這一效果:
#include <iostream>
#include <cstdlib> // Needed to use the exit function
using namespace std;

// Function prototype
void someFunction();

int main ()
{
    someFunction ();
    return 0;
}
void someFunction()
{
    cout << "This program terminates with the exit function. n";
    cout << "Bye!n";
    exit (0);
    cout << "This message will never be displayedn";
    cout << "because the program has already terminated.n";
}
程式輸出結果:

This program terminates with the exit function.
Bye!

要使用 exit 函數,必須包含 <cstdlib> 標頭檔案。請注意,該函數釆用整數實參,這個實參是希望程式返回到計算機作業系統的退出程式碼。該程式碼有時在程式外部使用,以指示程式退出是成功結束還是故障的結果。

上面的程式中,傳遞的退出程式碼是 0,該程式碼通常在程式 main 函數結束時在 return 語句中使用,表示程式成功終止。另一種發出該信號的方法是使用 C++ 命名常數 EXIT_SUCCESS。這個常數是在 cstdlib 中定義的,可以按以下形式和 exit 函數一起使用:

exit(EXIT_SUCCESS);

當然,一般認為良好的程式設計實踐是,盡可能在 main 函數結束時終止程式,所以,許多程式設計師僅使用 exit 函數來處理出錯的情形。在這種情況下,應該使用錯誤程式碼來表明發生了問題。這可以通過使用另一個 C++ 命名常數 EXIT_FAILURE 來完成。在 cstdlib 中定義的這個命名常數被定義為:通常表示當前作業系統下未能成功退出的終止程式碼。以下是其使用範例:

exit(EXIT_FAILURE);

提示,exit 函數將無條件地關閉程式。因為它繞過了程式的正常邏輯流程,所以應該謹慎使用它。