在C语言中,往往通过函数的返回值来判断函数的调用情况。例如,返回0,表示调用成功;返回-1,表示调用失败(函数执行失败,并且用errno来表示出错原因).也有一些函数使用多个值来表示函数的调用情况,例如,返回0,表示调用成功;返回1,表示调用失败,错误原因是文件打开失败;返回2,表示调用失败,错误原因是内存不足;如此等等.
 
下面介绍的这个方法是:将函数的返回值定义为一个枚举类型.
 
例如,在Cherokee的source中,有:
 
typedef enum {
	ret_no_sys          = -4,
	ret_nomem           = -3,
	ret_deny            = -2,
	ret_error           = -1,
	ret_ok              =  0,
	ret_eof             =  1,
	ret_eof_have_data   =  2,
	ret_not_found       =  3,
	ret_file_not_found  =  4,
	ret_eagain          =  5,
	ret_ok_and_sent     =  6
} ret_t; 
 
可以看出,返回值被限定在-4~6的取值范围之内,并且每个取值的意义一目了然.
 
调用处可以这样写了:
 
ret = check_worker_version (argv[0]);
if (ret != ret_ok)
	exit (EXIT_ERROR);