求个位大哥帮帮我!ACE_OS:last_error的问题
if (peer.recv(recv_data, 9, &x_timeout) == -1)
{
if (ACE_OS::last_error() == ETIME)
{
}else
{
}
}
为什么我在Debug中 ACE_OS::last_error()返回的错误码是超时, 而在Release中返回的是0呢?有谁知道为什么呀?急!!!!!!!!!~~~~~~~~~ 找到解决办法了.
在接收数据调用超时时,调用ACE_DEBUG((LM_DEBUG, "errno:%d:%m\n")
会出现errno:0:time out输出消息,从ACE_Log_Msg::log的源代码中可以看出在这里是获得了正确的
errno的,ACE_OS::last_error()不能获得正确的值估计是编译器优化掉了。
将config.h中的内容修改如下:
#define ACE_NO_INLINE
#include "ace/config-win32.h"
重新编译ACE,阻止release版本将ACE_OS::last_error()作为内联函数,问题就解决了。
但是还是不明,编译器怎么优化造成不能获得errno值。
页:
[1]