peakzhang 发表于 2007-12-15 22:12:25

请教各位大大一个问题,关于ACE单体实例

在学ACE日志方法中:ACE_Log_Msg
#include "stdafx.h"
#include "ace/Log_Msg.h"
//using namespace std;
void foo(void);
int ACE_TMAIN(int , ACE_TCHAR *[] )
{
    ACE_TRACE(ACE_TEXT("main"));
    ACE_DEBUG((LM_INFO,ACE_TEXT("%I Hi Mom\n")));
    foo();
    ACE_DEBUG((LM_INFO,ACE_TEXT("%I goodnight\n")));
int i;
    scanf("%d",&i);
return 0;
}
void foo (void)
{
ACE_TRACE(ACE_TEXT("foo"));
ACE_DEBUG((LM_INFO,ACE_TEXT("%I howdy Pardnet\n")));
}
以上程序能如书上示例正常显示结果,但若是加入全局单体实例时,却不能正常调用,如加入这一句话,以设定日志级别
ACE_Log_Msg->priority_mask(LM_DEBUG | LM_NOTICE,ACE_Log_Msg::PROCESS);//这一句是书上原句
则报错为
error C2143: syntax error : missing ';' before '->'
对其另再进行实例化
ACE_Log_Msg * Ace_pri = new ACE_Log_Msg;
则能正常运行显示,ACE_Log_Msg应该为ACE自动管理的全局单体实例, 请问是否有哪里配置不对呢。。。
用的是VC6.0ACE版本为5.4
望达人大大们能不吝赐教!

peakzhang 发表于 2007-12-15 22:12:38

你写错了,改成ACE_LOG_MSG->就成了。

peakzhang 发表于 2007-12-15 22:12:49

非常感谢!一针见血(~> <~),偶太粗心了,猪。

源码如下:

static ACE_Log_Msg *instance (void);//所以后来偶写了如下代码。

ACE_Log_Msg::instance ()->priority_mask(LM_DEBUG | LM_NOTICE,ACE_Log_Msg::PROCESS);

而竟然忽略了声明部分有这么一行:

#define ACE_LOG_MSG ACE_Log_Msg::instance ()
页: [1]
查看完整版本: 请教各位大大一个问题,关于ACE单体实例