gpt4 book ai didi

c++ - 使用#if defined(_DEBUG)

转载 作者:搜寻专家 更新时间:2023-10-31 00:37:07 25 4
gpt4 key购买 nike

我正在编写一个基于 C++ MFC 的应用程序。偶尔我会添加#if defined(_DEBUG) 语句以在开发过程中帮助我。我的经理要求我删除所有此类语句,因为他不想要两个版本的代码。我的感觉是,如果不能使用 #if defined(_DEBUG),错误更有可能在开发过程中潜入而不被发现。

还有其他人对此有任何想法吗?

最佳答案

嗯,运行时库,MFC有两个版本,debug和release,所以代码总会有两个版本。

#ifdef(_DEBUG) 和 assert() 的使用将帮助您进行调试。

但是...

不建议在#ifdef 子句中添加类/结构成员,因为对象的二进制接口(interface)会不同,如果您从调试版本和发布版本序列化或发送这样的结构,它们将不同。

例如:

#include <assert.h>

class MyClass
{
void SetA(int a)
{
assert(a<10000); // this is recommended
}

#ifdef _DEBUG
int m_debugCounter; // This is not recommended
#endif
};

在示例中,sizeof(MyClass) 不同于调试版本和发布版本。

关于c++ - 使用#if defined(_DEBUG),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20392059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com