#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 中的发布模式的主要内容,如果未能解决你的问题,请参考以下文章
VS2008里,创建一个win32 static libraryd静态库后,怎么添加一个 symbol “TETLIBRARY” 到编译开关?