2015-04-15 38 views

回答

1

recvfrom返回后,调用某些其他函数将errno设置为零的情况。这非常容易做到。为了安全起见,在recvfrom返回后立即将errno复制到其他变量立即

错误:

i = recvfrom (...); 
if (i < 0) 
{ 
    printf ("recvfrom error!\n"); 
    printf ("errno=%d\n", errno); 
} 

如果第一printf修改errno会发生什么?

右:

i = recvfrom (...); 
if (i < 0) 
{ 
    int j = errno; 
    printf ("recvfrom error!\n"); 
    printf ("errno=%d\n", j); 
} 

的ANSI规范说,“[A],使用错误号错误检查程序应该......随后的库函数调用之前检查它。”

+0

好了,我快要扑了。但肯定它会更加重要的是颠倒'printf()'调用的顺序,或者将它们组合起来? – EJP

1

从来没有。这不应该发生。

相关问题