【发布时间】:2012-07-15 01:31:31
【问题描述】:
我正在实现 perror() 等效于我正在使用的 API。
perror() ISO C std doc 说:
perror() 函数不应改变标准的方向 错误流。
但以编程方式,这意味着什么?
我目前正在使用fprintf(stderr, .. )。是误用了吗?如果是真的,为什么?如果我的实现中有一些错误(见下文),请给我点。
根据我的解释查看我的 C 代码:
void
fooapi_perror(const char *s)
{
char *emsg;
if(s != NULL && *s != '\0')
fprintf(stderr, "%s: ", s);
emsg = fooapi_strerror(GetLastErrorCode());
fprintf(stderr, "%s\n", emsg);
free(emsg);
}
【问题讨论】:
-
有趣,您的链接是 POSIX 标准,而不是 ISO C 标准。我的 ISO/IEC 9899:1999 副本与您链接的副本几乎相同 - 除了您要查询的行!
-
您可能希望将问题的标题从安静的通用措辞
... perror() - issue修改为更具体的措辞,例如... perror(): output stream orientation,因为它更多地是关于后者而不是关于perror()实现本身.