仅在发布版本中删除功能
Remove function in Release build only
是否有任何方法可以从发布构建中删除一行代码,但将其留在没有丑陋#if
语句的调试构建中?
#if DEBUG
Log.Log("I am in debug mode");
#endif
如果我在Log.Log
函数中有一个条件,运行时检查,那么字符串"I am in debug mode"将保留在我编译的可执行文件中,这正是我不想要的。
在共享的头文件中定义另一个宏。
#ifdef DEBUG
#define LOG(m) Log.Log(m);
#else
#define LOG(m) do {} while(false);
#endif
然后将Log.Log
的呼叫替换为LOG
你最终会在某个地方需要一个预处理器条件,但如果你想保持你的应用程序代码干净,你可以在"上游"的某个共享头文件中应用它。在这种情况下,你会有像
这样的东西#if DEBUG
#define DebugLog(m) Log.Log(m);
#else
#define DebugLog(m)
#endif
在与Log
相关的头文件中,而不是在应用程序代码中的预处理器条件中调用Log.Log(m),您只需调用DebugLog(m)
。在调试版本中,宏将扩展为Log.Log(m),否则它将完全消失。
让您的Log.Log
函数#ifdef基于构建。在DEBUG中,它记录东西,在RELEASE中,它是无操作。例如:
namespace Log
{
void Log()
{
#if DEBUG
//Insert logging code here.
#endif
}
}
相关文章:
- 在Qt5中使用QTextSteam时的"使用已删除功能"
- 链表删除功能的单指针 // 是可能的
- 删除功能不适用于串行通信后多个循环中的多个实例
- 为什么每当我尝试运行此链接列表删除功能时都会收到分段错误错误?
- 使用删除功能?
- 二叉搜索树 - 使用 Linux 在虚拟机中制作删除功能
- 为什么我的删除功能总是出现分段错误
- 与 c++ 中的删除功能混淆
- 用户使用C++中的删除功能删除文件
- 所以我想出了他的代码,但我不确定如何继续删除功能?
- 为什么我的删除功能中存在错误
- std::ifstream,使用已删除功能
- 学习C :错误:使用已删除功能
- 升级基于文本游戏的库存中的删除功能
- 错误:使用已删除功能
- 删除功能和ADL
- 队列的删除功能
- 删除功能误差的C 与有条件的iniaization一起使用
- 在PowerPC编译器上删除功能,而不是GCC上的功能
- 为什么是我的AVL树删除功能不平衡