c++ - Resharper C++ 和 Plog 记录器
问题描述
我在我的项目中使用 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 版本之一中解决此问题。在此之前,您可以PLOG_GET_THIS
像这样重新定义 ReSharper C++ 的宏:
#include <plog/Log.h>
#if defined(__RESHARPER__)
#define PLOG_GET_THIS() reinterpret_cast<void*>(0)
#endif
或者类似地更新的原始定义PLOG_GET_THIS
(它已经检查了类似的__INTELLISENSE__
宏以确定是否__if_exists
可以使用)。
推荐阅读
- php - 如果用户未选中复选框,则将 DATE 提交到数据库,如果用户已选中,则将提交当前日期
- elasticsearch - 如何为 Kibana 中的不同字段使用一个通用过滤器?
- influxdb - 如何启动 influxdb 2.0.2?
- mysql - GROUP BY 非标准 MySQL 到标准 SQL
- linux - 获取进程信息(当前进程、父进程、最早的子进程)
- javascript - 使用 JQuery 将数据附加到 html 表
- python - 如何在 IDE (PyCharm) 中添加和使用包含 OpenCV-Contrib 的新版本的 OpenCV?
- javascript - 使用 Promise.all 在 TypeScript 中返回数组后无法在 void 上调用数组方法
- c++ - 转换为提取运算符的右操作数 (>>)
- python - 如何在不同的行上打印名称并阻止它们在每次运行文件时添加?