我在我的项目中使用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";
警告指出使用&#34;这个&#34;因为它需要一个标识符。
它正在调用的方法有一个签名:
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)
有没有人有这方面的经验知道如何修改宏,所以它不会抱怨?
答案 0 :(得分:2)
我已经提交了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
。