但有没有一种通用的方式,记录函数的所有参数,并打印出来?


在日常工作中通过日志来记录程序行为,一般都是自己实现日志打印,我现在想把所有函数的参数都打印出来,有没有一种简单通用的方式可以实现?

比如以下函数:

   
  void SomeFunc( bool p1, wchar_t* p2 )
  
{
}

可以通过增加一个宏,自动就可以把p1, 和p2自动打印出来?

c php VC C++

再见@蝴蝶 12 years, 6 months ago

如果要求不是很高,C++里可以采用<<运算符的特性采用如下方式:

   
  void SomeFunc( bool p1, wchar_t* p2 )
  
{
LOG_PARAMETERS<<p1<<p2;
}

LOG_PARAMETERS根据需要定义:
// #define COMPACT_FPC_LOG_PARAMETER
// fpc::FPCLogMessage(PARAMETER,&fpc::FPCLogMessage::SendToSink)
// #define LOG(severity) COMPACT_FPC_LOG_PARAMETER # # severity.stream()
// #define LOG_PARAMETERS LOG(PARAMETER)
class FPC_DLL FPCLogMessage{

public:
typedef void (FPCLogMessage::*SendMethod)();
FPCLogMessage(LogSeverity severity,SendMethod method){/*******/}
~FPCLogMessage(){/*******/}
void SendToFile(){/*******/}
void init(){/*******/}
FORCE_INLINE std::stringstream& stream() { return LogStream_; }
private:
SendMethod fSengMethod_;
LogSeverity eSeverity_;
std::stringstream LogStream_;
FPC_SYNTHESIZE_PASS_BY_REF(std::string,sLogFileName_,LogFileName)
};

如果只想通过一个宏实现所有的参数打印,借助函数调用参数入栈,可以取得FP,之后应该可以在栈内做些操作,可能比较。。。十分。。。非常麻烦.

ToNyL. answered 12 years, 6 months ago

Your Answer