我在项目中使用Plog进行日志记录。我也使用resharper c++。

有几个用于日志记录的宏使它不太冗长。 Resharper总是将其中一个宏标记为问题,但我不知道为什么。

宏是LOGD,它扩展为

            if (!plog::get<0>() || !plog::get<0>()-
              >checkSeverity(plog::debug)) {;} else (*plog::get<0>()) +=
              plog::Record(plog::debug, __FUNCTION__, 151, "",
              __if_exists(this) { this } __if_not_exists(this) { 0 }) <<
              "Message";

警告指出“this”的使用,因为它需要一个标识符。

它所调用的方法具有以下特征:
Record(Severity severity, const char* func, size_t line, const char* file, const void* object)
        : m_severity(severity), m_tid(util::gettid()), m_object(object), m_line(line), m_func(func), m_file(file)

有没有人对此有经验,知道如何修改宏,因此不会抱怨?

最佳答案

我已提交RSCPP-22423,我们将尝试在2018.2 EAP版本之一中解决此问题。在此之前,您可以像这样重新定义ReSharper C++的PLOG_GET_THIS宏:

#include <plog/Log.h>
#if defined(__RESHARPER__)
#define PLOG_GET_THIS() reinterpret_cast<void*>(0)
#endif

或类似地更新PLOG_GET_THIS的原始定义(它已经检查了相似的__INTELLISENSE__宏以确定是否可以使用__if_exists)。

07-27 13:34