【问题标题】:ACE_TRACE macro not workingACE_TRACE 宏不起作用
【发布时间】:2012-07-14 12:14:43
【问题描述】:

我正在关注 Stephen D. Huston、James CE Johnson、Umar Syyid 所著的 ACE Programmer's Guide, The: Practical Design Patterns for Network and Systems Programming 一书。在本书一开始就有一个清单:

#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 的库有什么优势吗?

【问题讨论】:

    标签: c++ ace


    【解决方案1】:

    那是因为你还没有定义ACE_NTRACE,所以ACE_TRACE 默认扩展为空。将此添加到您的代码中:

    #define ACE_NTRACE 0
    

    【讨论】:

    • 我没有 15 个声望,这就是为什么我不能投票的原因 :(。你能给我推荐任何学习 ACE 的好资源吗?
    • 这个online ACE tutorial 可以帮助您入门...
    • 我认为这个教程已经过时了。当我尝试编译第一个程序时,它显示错误。例如,当我编译此页面link 的程序时,我得到如下错误:致命错误C1083:无法打开包含文件:'acceptor.h':没有这样的文件或目录。当我用 'ace/Acceptor.h' 更改 'acceptor.h' 时,会出现一堆错误。你能帮帮我吗?
    • 对不起,我没注意到。它不是 ACE 标头,而是自定义标头。再次感谢您的帮助。
    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 2018-04-05
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多