#ifdef _DEBUG 在 vs 2008 中的发布模式

Posted

技术标签:

【中文标题】#ifdef _DEBUG 在 vs 2008 中的发布模式【英文标题】:#ifdef _DEBUG release mode in vs 2008 【发布时间】:2012-11-16 03:15:07 【问题描述】:

我的项目的某些部分在发布模式下不起作用。我可以使用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做一些事情。不是吗?

【问题讨论】:

我不太确定你在问什么。 【参考方案1】:

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

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

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

以上是关于#ifdef _DEBUG 在 vs 2008 中的发布模式的主要内容,如果未能解决你的问题,请参考以下文章

VS 查看是否有内存泄露的方法

VS2005 检测内存泄漏的方法(转载)

VS2008里,创建一个win32 static libraryd静态库后,怎么添加一个 symbol “TETLIBRARY” 到编译开关?

vs2008添加预编译命令

VS2008设置断点无效

非活动 #ifdef 块中的编译器错误