据我所知,如果不是所有标准 C 函数,大多数(如果不是全部)都会将全局设置为errno
失败以表示发生了什么,因此该值可用于日志记录、调试或测试。是否建议用户定义的函数使用相同的行为,或者我们应该使用一个local_errno
接受具有相同含义的相同值的全局变量来模仿它?
例如,我正在编写一个计算器,并且我想要一个加法函数来报告溢出:
#include <errno.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
Add( int, int );
int
main( void )
{
int a = 0, b = 0, res0 = 0;
scanf(“%d %d”, &a, &b );
res0 = Add(a,b);
if( res0 == INF )
{
fprintf(stderr, “Error %s in Add\n”, strerror(errno));
return(errno);
}else
{
printf(“%d\n”, res0);
}
return(EXIT_SUCCESS);
}
int
Add( int l, int r )
{
if( l == INT_MAX || r == INT_MAX )
{
errno = EOVERFLOW;
return(INF);
}
return(l+r);
}