对象函数的宏定义

来源:互联网 发布:全途进销存打单软件 编辑:程序博客网 时间:2024/06/07 10:07

#pragma once

#ifdef _WINDOWS_
#pragma warning(disable : 4996)
#endif


//日志消息回调函数
typedef void (*TDll_Log)(
       LPVOID lpContext,     //环境变量
       LPCSTR lpszMsg,     //日志消息
       int nLevel       //日志等级
       );

class TDllLog
{
public:

 //构造函数
 TDllLog(const char *lpszFile, int nLine, int nLevel);

 //操作符"()"的重载
 void operator()(const char *pszFmt, ...) const;

 // 注册日志回调函数
 static void TDll_RCFLog(
  TDll_Log pLogFun=NULL,    //日志信息回调函数指针
  LPVOID lpContext=NULL     //环境变量 
  );

private:

 const char * m_lpszFile;  //源文件路径
 const int m_nLine;    //行号
 const int m_nLevel;    //日志等级

 static TDll_Log g_LogFun;
 static LPVOID g_lpLog;
};


//以下是用于输出日志的一组宏
#define DllLogN(n)  TDllLog(__FILE__, __LINE__, n)
#ifndef Log
#define Log DllLogN(1000)
#endif // Log

Log("Hello")   DllLogN(1000)    TDllLog(__FILE__, __LINE__, 1000)("Hello")

0 0
原创粉丝点击