ACE_TRACE宏不工作

ACE_TRACE macro not working

本文关键字:工作 TRACE ACE      更新时间:2023-10-16

我正在阅读Stephen D.Huston、James CE Johnson和Umar Syyid的《ACE程序员指南:网络和系统编程的实用设计模式》一书。在这本书的开头有一个列表:

#include "ace/Log_Msg.h"
void foo (void);
int ACE_TMAIN (int, ACE_TCHAR *[])
{
    ACE_TRACE(ACE_TEXT ("main"));
    ACE_DEBUG ((LM_INFO, ACE_TEXT ("%IHi Momn")));
    foo();
    ACE_DEBUG ((LM_INFO, ACE_TEXT ("%IGoodnightn")));
    return 0;
}
void foo (void)
{
    ACE_TRACE (ACE_TEXT ("foo"));
    ACE_DEBUG ((LM_INFO, ACE_TEXT ("%IHowdy Pardnern")));
}

正如书中所说,这个代码应该有输出:

(1024) calling main in file `Simple1.cpp' on line 7
   Hi Mom
   (1024) calling foo in file `Simple1.cpp' on line 18
      Howdy Pardner
   (1024) leaving foo
   Goodnight
(1024) leaving main

但它正在输出:

Hi Mom
Howdy Pardner
Goodnight

我将它作为Win32控制台应用程序在Windows7、Visual C++2010中运行。有没有其他方法可以轻松学习ACE?用这种方式学习似乎很乏味。Qt拥有自己的跨平台网络库。ACE比Qt的库有什么优势吗?

这是因为您还没有定义ACE_NTRACE,所以默认情况下ACE_TRACE会扩展为零。将此添加到您的代码中:

#define ACE_NTRACE 0