我正在为 C++ 构建一个基于树的调试/日志系统。
它的“用户界面”是一个宏,它将用户定义的消息和调用站点信息(文件、行、对象地址)传递给特殊函数,然后执行日志记录。
该函数使用对象地址按对象实例对消息进行分组。
目前看起来是这样的:
// in logging system header
#define msg (event_level, message) \
do_logging_ (event_level, __FILE__, __LINE__, this, message)
...
// in code
msg (MSG_WARNING, "some text");
我想问一下,是否有一些统一的方法(可在 msg
宏中使用)来获取 NULL
而不是 this
其中 this
没有定义(全局/静态函数)?
最佳答案
您可以更改您的宏定义:
#define msg (event_level, message, THIS) \
do_logging_ (event_level, __FILE__, __LINE__, THIS, message)
用法:
msg (MSG_WARNING, "some text", this); // in member methods
msg (MSG_WARNING, "some text", NULL); // otherwise
关于c++ - 在全局函数中获取对象地址或 NULL 的统一方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6790175/