读书人

C++支不支持可变参数宏解决思路

发布时间: 2012-10-19 16:53:36 作者: rapoo

C++支不支持可变参数宏
比如我要写:
#define WRITE_LOG(LOG_TYPE,MESSAGE,...)\
CMyLog *p = CMyLog::GetInstance();\
p->WriteLog(LOG_TYPE,MESSAGE,__VA_ARGS__);
是否可以?

[解决办法]
http://msdn.microsoft.com/en-us/library/ms177415(v=vs.80)
[解决办法]

C/C++ code
  #define WRITE_LOG LogService::getInstance().write  static void doWrite(char const* message, char  const * logFile)  {        std::ofstream logStream(logFile, std::ios_base::app);    if(logStream)    {      logStream <<  message << std::endl;    }    else    {      std::cerr << message << std::endl;    }  }  void LogService::write(char const * format, ...)  {    static char buffer[512];    va_list args;    va_start (args, format);    vsprintf (buffer, format, args);    doWrite (buffer, logFile_.c_str());    va_end (args);            } 

读书人网 >C++

热点推荐