找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 3990|回复: 1

VC下ACE_DEBUG 的输出在那里??

[复制链接]
发表于 2007-12-15 22:14:50 | 显示全部楼层 |阅读模式
  1. #include "ace/Log_Msg.h"
  2. void foo (void);
  3. int ACE_TMAIN (int, ACE_TCHAR *[])
  4. {  ACE_TRACE(ACE_TEXT ("main"));
  5.   ACE_DEBUG ((LM_INFO, ACE_TEXT ("%IHi Mom\n")));
  6.   foo();
  7.   ACE_DEBUG ((LM_INFO, ACE_TEXT ("%IGoodnight\n")));
  8.   return 0;
  9. }
  10. void foo (void)
  11. {  ACE_TRACE (ACE_TEXT ("foo"));
  12.   ACE_DEBUG ((LM_INFO, ACE_TEXT ("%IHowdy Pardner\n")));
  13. }按照书上写的有下面的结果(1024) calling main in file `Simple1.cpp' on line 7
  14.    Hi Mom
  15.    (1024) calling foo in file `Simple1.cpp' on line 18
  16.       Howdy Pardner
  17.    (1024) leaving foo
  18.    Goodnight
复制代码
(1024) leaving main 我怎么没看见 (1024) calling main in file `Simple1.cpp' on line 7              (1024) calling foo in file `Simple1.cpp' on line 18              (1024) leaving main这几行啊 !!!???
 楼主| 发表于 2007-12-15 22:15:25 | 显示全部楼层
找到了
是否产生日志输出与是否去掉 “stdafx.h预编译”没有关系,

真正起作用的是下面这句宏定义

#define ACE_NTRACE 0

原因如下:

日志宏是否产生日志方法调用,由相应的配置设置在编译时的值决定(见《ACE程序员指南》31页),ACE_NTRACE的值默认为1(在config-win32-common.h中定义的),表示禁用ACE_TRANCE宏,把ACE_NTRACE 定义为0,则表示启用宏ACE_TRACE,所以当定义了语句

#define ACE_NTRACE 0 之后,就可以显示ACE_TRACE宏了。

注意,语句#define ACE_NTRACE 0 要放在#include "ace/Log_Msg.h"
的前面,否则无效,因为在ace/Log_Msg.h中已经定义ACE_NTRACE 为1
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

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

GMT+8, 2024-5-20 13:45 , Processed in 0.112343 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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