#ifdef _DEBUG vs 2008 中的发布模式

#ifdef _DEBUG release mode in vs 2008

本文关键字:布模式 模式 DEBUG vs 2008 #ifdef      更新时间:2023-10-16

我的项目的某些部分在发布模式下不起作用。我可以使用printf检查它,它不会打印任何东西。我将在以下代码中向您展示:

void SNKsomething::vGetState()
{
#ifdef SNK_STH
for(int i = 0; i < 2; i++)
{
printf("sthn');
}

此外,SNK_STH在文件 Globals.h 中定义如下

#ifdef _DEBUG // in Project properties
#define SNK_STH
#else
// .....

所以,我没有看到我在发布模式下打印它的sth。我想知道我必须在VS-2008的项目属性中做一些关于_DEBUG的事情。不是吗?

_DEBUG是一个预处理器宏。 如果右键单击属性并转到 c/c++,则预处理器是选项之一。

发布和调试的预处理器定义是不同的。 如果将SNK_STH添加到发布预处理器宏,您将看到 printf。

如果要在调试和发布中查看代码,请考虑将其从 ifdef 中提取出来。

我在使用_DEBUG宏时遇到了问题,我发现非常有用的是IsDebuggerPresent 函数返回一个布尔值:

如果当前进程在调试器的上下文中运行,则返回值为非零值。

如果当前进程未在调试器的上下文中运行,则返回值为零。