c++ - 在全局函数中获取对象地址或 NULL 的统一方法

标签 c++ this c-preprocessor object-address

我正在为 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/

相关文章:

javascript - .bind(this) 是按引用传递还是按值传递?

c - 获取函数名称作为符号(而不是字符串)- C 预处理器

c - 头文件中的完整宏

c++ - 在 for 循环中限制 vector.size()

c++ - 多个源文件可执行文件比单个源文件可执行文件慢

c++ - 修改 BOOST_FOREACH 中 vector 的内容

c++ - OpenGL glCreateProgram() 总是返回 1 并删除之前的程序

javascript - 使用纯JS仅对某个类的一个div调用函数

c++ - 在派生类中调用 sizeof(*this)

c++ - 是否可以编写一个在函数范围内使用时会提示的宏?