加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 实现perror() – 问题

发布时间:2020-12-16 10:22:35 所属栏目:百科 来源:网络整理
导读:我正在实现perror()等效于我正在使用的API. perror()ISO C std doc 说: The perror() function shall not change the orientation of the standard error stream. 但以编程方式,它意味着什么? 我目前正在使用fprintf(stderr,..).用它是个错误吗?如果是真
我正在实现perror()等效于我正在使用的API.

perror()ISO C std doc说:

The perror() function shall not change the orientation of the standard
error stream.

但以编程方式,它意味着什么?

我目前正在使用fprintf(stderr,..).用它是个错误吗?如果是真的,为什么?如果我的实施中有一些错误(见下文),请给我点.

根据我的解释查看我的C代码:

void
fooapi_perror(const char *s)
{
  char *emsg;

  if(s != NULL && *s != '')
    fprintf(stderr,"%s: ",s);

  emsg = fooapi_strerror(GetLastErrorCode()); 
  fprintf(stderr,"%sn",emsg); 
  free(emsg);
}

解决方法

每个C流都有一个属性 – “方向”或“面向宽”或“面向字节”,这是由对该蒸汽的第一次操作决定的.当流没有“方向”时,可以改变蒸汽的方向.调用任何方向与流方向冲突的函数会导致未定义的行为.

例如,printf将使蒸汽变为字节导向,而wprintf导致蒸汽变为宽向导.

就你的问题而言,perror不应改变其流的方向.

所以在你的代码中,如果perror使用的流已经有了一个方向,你应该确保你没有调用一个方向与流的当前方向冲突的函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读