找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 7302|回复: 1

求个位大哥帮帮我!ACE_OS:last_error的问题

[复制链接]
发表于 2007-12-13 00:07:06 | 显示全部楼层 |阅读模式
  1. if (peer.recv(recv_data, 9, &x_timeout) == -1)
  2.    {
  3.         if (ACE_OS::last_error() == ETIME)
  4.         {
  5.         }else
  6.         {
  7.        }
  8. }
复制代码
为什么我在Debug中 ACE_OS::last_error()返回的错误码是超时, 而在Release中返回的是0呢?有谁知道为什么呀?急!!!!!!!!!~~~~~~~~~
 楼主| 发表于 2007-12-13 00:07:17 | 显示全部楼层
找到解决办法了.
在接收数据调用超时时,调用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值。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-20 07:17 , Processed in 0.012003 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表