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
但以编程方式,它意味着什么? 我目前正在使用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使用的流已经有了一个方向,你应该确保你没有调用一个方向与流的当前方向冲突的函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容