我项目的某些部分在发布模式下无法正常运行。我可以使用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做一些事情。不是吗?
答案 0 :(得分:1)
_DEBUG是一个预处理器宏。如果右键单击属性并转到c / c ++,预处理器就是其中一个选项。
预处理程序定义对于发布和调试是不同的。如果将SNK_STH添加到发布预处理器宏,您将看到printf。
如果您想在调试和发布中查看代码,请考虑将其从ifdef中删除。
答案 1 :(得分:0)
我遇到了_DEBUG宏的问题,我发现非常有用的是 IsDebuggerPresent function 返回一个布尔值:
如果当前进程在调试器的上下文中运行,则返回值为非零。
如果当前进程未在调试器的上下文中运行,则返回值为零。