理解C ++中的一段代码

时间:2011-03-16 18:32:34

标签: visual-c++

您能帮我理解以下代码吗?

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

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

3 个答案:

答案 0 :(得分:0)

调用errorexit("Error Message")会将“错误消息”打印到标准错误流(通常在终端中)并退出程序。调用程序的任何程序(例如shell)都会知道自程序以非零状态退出后出现错误。

答案 1 :(得分:0)

它通过fprintf将pchar指向的字符串打印到标准错误输出,然后强制应用程序退出,返回码为1.这将在应用程序无法继续运行时用于严重错误。

答案 2 :(得分:0)

该函数将提供的字符串和换行符打印到stderr,然后终止当前正在运行的程序,提供1作为返回值。

fprintfprintf类似,它输出字符,但fprintf稍有不同,因为它将文件句柄作为参数。我这种情况stderr是标准错误的文件句柄。此句柄已由stdio.h为您定义,并对应于错误输出流。 stdoutprintf输出的内容,因此fprintf(stdout, "hello")相当于printf("hello")

exit是一个函数,它终止当前进程的执行,并将其参数的任何值作为返回代码返回给父进程(通常是shell)。非零返回码通常表示失败,具体值表示失败的类型。

如果你从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;
}

你会看到这个输出:

Hello world!
Goodbye :(

你的shell会显示“1”作为返回值(在bash中,你可以使用echo $?查看最后一个返回码。)

请注意“开个玩意儿!”将打印,因为errorexit调用exit,在main完成之前结束该计划。