在vs 2008中#ifdef _DEBUG发布模式

时间:2012-11-16 03:15:08

标签: c++ debugging visual-studio-2008 build release

我项目的某些部分在发布模式下无法正常运行。我可以使用printf进行检查,但不会打印任何内容。我将在下面的代码中向您展示:

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

如果您想在调试和发布中查看代码,请考虑将其从ifdef中删除。

答案 1 :(得分:0)

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

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

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