我正在尝试实现在不需要时不会产生开销的日志记录(即根本不应该执行任何方法调用)。我想要 NO 开销,因为它是低延迟代码。我刚刚添加#define ENABLE_LOGS
到我的头类中,现在看起来像这样(你可以忽略细节)
#pragma once
#include <string>
#include <fstream>
#define ENABLE_LOGS
namespace fastNative {
class Logger
{
public:
Logger(std::string name_, std::string fileName, bool append = false);
~Logger(void);
void Error(std::string message, ...);
void Debug(std::string message, ...);
void DebugConsole(std::string message, ...);
void Flush();
static Logger errorsLogger;
static Logger infoLogger;
private:
FILE* logFile;
bool debugEnabled;
};
}
每次我需要使用某种方法时,我都应该像这样包围它:
#ifdef ENABLE_LOGS
logger.Debug("seq=%6d len=%4d", seq, length_);
#endif
这是错误电话(我可以忘记环绕)并使代码变脏。我可以以某种方式修复我的代码而不是#ifdef
每次都使用吗?
在 C# 中,我喜欢有条件的,我想我需要类似的东西用于 c++。