记录退出代码? ( C )

时间:2014-04-16 15:13:20

标签: c exit-code

我正在寻找有关在C文件中记录退出代码的说明。

例如,我有以下内容:

if( !(new_std = (student*) malloc(sizeof(student))) )
    exit(1);

//+1 is for the \0, strlen does not give us that one!
if( !(new_std->name=(char*) malloc(1+sizeof(char)*strlen(name)))){
    free(new_std);
    exit(1);
}

在我的文件中记录的正确方法是什么,以1号出口表示 内存分配失败?

2 个答案:

答案 0 :(得分:2)

没有"正确答案"但我想大多数人都会建议使用常量: 将它们放在任何C文件可以包含的公共头文件中。

<强> exit_codes.h

#define EXIT_SUCCESS           0
#define EXIT_GENERAL_FAILURE   1
#define EXIT_OUT_OF_MEM        2

<强> whatever.c

#include "exit_codes.h"
void *p = malloc(100);
if (!p)
    exit(EXIT_OUT_OF_MEM);

答案 1 :(得分:1)

这样做是这样的:

typedef enum exit_code {
    SUCCESS = 0,
    ALLOCATION_FAILURE = 1,
    FOO = 2
} exit_code_t;

exit_code_t my_function(void)
{
    //.....
    return ALLOCATION_FAILURE;
}

为此目的使用枚举比定义更好,因为:

  • 您可以在函数返回值上使用switch-case语句,如果忘记检查值,则会收到警告。
  • 您可以使用调试器打印它们的值,而无需添加任何特殊的编译器标志。
  • 您可以将枚举用作函数的返回类型,以明确有效返回值是什么。