1

据我所知,如果不是所有标准 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);
}
4

0 回答 0