【发布时间】:2010-12-08 18:43:21
【问题描述】:
我正在看一段 C 代码,它类似于
void printerror(char *message)
{
printf ("There was an error: '%s'\n", message);
switch (errno) {
... do stuff depending on errno
}
}
我认为这可能是个问题,因为 printf 可能会在进入函数和到达 switch 之间更改 errno。但是,printf 的手册页没有说明它设置 errno,所以我可以假设它永远不会设置它吗?标准中有什么东西可以保证哪些函数会使用errno,哪些函数不会使用errno?
【问题讨论】:
-
为什么不做类似
int saved_error = errno的事情? -
@Thanatos:很明显。问题是对于所有 stdlib 函数是否真的有必要(答案表明确实如此)