找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3965|回复: 2

Windows下有个地方ACE容易出现无限的递归调用

[复制链接]
发表于 2012-6-1 15:09:18 | 显示全部楼层 |阅读模式
#define ACE_ASSERT(X) ACE_TEST_ASSERT(X)


ACE_Export void __ace_assert(const char *file, int line, const ACE_TCHAR *expression);
ACE_END_VERSIONED_NAMESPACE_DECL
#define ACE_TEST_ASSERT(X) \
  ((X)                      \
   ? static_cast<void>(0)   \
   : ACE_VERSIONED_NAMESPACE_NAME::__ace_assert(__FILE__, __LINE__, ACE_TEXT_CHAR_TO_TCHAR (#X)))

在__ace_assert 函数中:

void
__ace_assert(const char *file, int line, const ACE_TCHAR *expression)
{
  int error = ACE_Log_Msg::last_error_adapter ();
  ACE_Log_Msg *log = ACE_Log_Msg::instance ();
  log->set (file, line, -1, error, log->restart (),
            log->msg_ostream (), log->msg_callback ());
  log->log (LM_ERROR, ACE_TEXT ("ACE_ASSERT: file %N, line %l assertion failed for '%s'.%a\n"), expression, -1);
}

调用了个ACE_Log_Msg *log = ACE_Log_Msg::instance ();
这个函数里面又会使用  ACE_ASSERT

这样只要调用 这个宏 就会出现递归调用
发表于 2012-6-3 14:01:41 | 显示全部楼层
是吗,好像不是吧
发表于 2012-6-3 23:26:00 | 显示全部楼层
如果确实有问题,可以反馈给ACE项目组的邮件列表。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-5-2 06:50 , Processed in 0.017724 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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