2011-03-16 47 views
0

你能幫我理解下面的代碼嗎?瞭解C++中的一段代碼

void errorexit(char *pchar) { 
    // display an error to the standard err. 

    fprintf(stderr, pchar); 
    fprintf(stderr, "\n"); 
    exit(1); 
} 
+1

你知道些什麼? – Thomas 2011-03-16 18:36:42

回答

0
調用

errorexit("Error Message")將打印「錯誤消息」到標準錯誤流(通常在終端),並退出該程序。任何調用程序的程序(例如shell)都會知道程序以非零狀態退出時出現錯誤。

0

它將pchar所指向的字符串打印到通過fprintf輸出的標準錯誤,然後強制應用程序以1的返回碼退出。當應用程序無法繼續運行時,這將用於嚴重錯誤。

0

該函數將提供的字符串和換行符打印到stderr,然後終止當前正在運行的程序,提供1作爲返回值。

fprintf就像printf在於其輸出字符,但fprintf是,它需要一個文件句柄作爲參數稍有不同。我這種情況stderr是標準錯誤的文件句柄。這個句柄已經由stdio.h爲你定義,並且對應於錯誤輸出流。 stdout是什麼printf輸出到,所以fprintf(stdout, "hello")相當於printf("hello")

exit是一個函數,它終止當前進程的執行並將其參數的任何值作爲返回代碼返回給父進程(通常是shell)。非零返回碼通常表示失敗,具體值表示失敗的類型。

#include <stdio.h> 
#include "errorexit.h" 

int main(int argc, char* argv[]) 
{ 
    printf("Hello world!\n"); 
    errorexit("Goodbye :("); 
    printf("Just kidding!\n"); 

    return 0; 
} 

你會看到這樣的輸出:

如果你從shell運行此程序

Hello world! 
Goodbye :(

而且你的shell會顯示 「1」 的返回值(在bash,您可以使用echo $?查看最後的退貨代碼)。

請注意「只是在開玩笑!」 不是將被打印,因爲errorexit調用exit,在main完成之前結束程序。