ACE_TRACE宏不起作用

时间:2012-07-14 12:14:44

标签: c++ ace

我正在关注 ACE程序员指南,网络和系统编程的实用设计模式,作者:Stephen D. Huston,James CE Johnson,Umar Syyid。在本书的最开始有一个列表:

#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 Mom\n")));
    foo();
    ACE_DEBUG ((LM_INFO, ACE_TEXT ("%IGoodnight\n")));

    return 0;
}

void foo (void)
{
    ACE_TRACE (ACE_TEXT ("foo"));

    ACE_DEBUG ((LM_INFO, ACE_TEXT ("%IHowdy Pardner\n")));
}

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

(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

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

1 个答案:

答案 0 :(得分:3)

那是因为您尚未定义ACE_NTRACE,因此ACE_TRACE默认情况下展开为空。将其添加到您的代码中:

#define ACE_NTRACE 0