OutputDebugString导致不一致的错误

时间:2012-03-26 04:55:56

标签: c++ visual-studio-2010

我出现了一个因神秘原因而出现并消失的问题。不久之后,当我启动项目时,我发现了一个非常方便的功能,允许VS2010中的调试窗口输出。它的效果很好。

现在它显示错误不一致。这意味着有时代码会编译,有时则不会编译,我无法找到导致错误的代码。看起来几乎是随机的。按编译,错误,再次按编译而不改变任何内容有时错误有时很好。

这就是错误的样子:

http://clip2net.com/clip/m0/1332710747-clip-29kb.png

且没有:

http://clip2net.com/clip/m0/1332737362-clip-40kb.png

罪魁祸首是OutputDebugString(buf); 注释掉该行时不会出现错误。

我希望解决这个问题,我只需要一种方法将文本输出到调试窗口(输出),我正在寻找一个简单,稳定的解决方案。或许有一种方法可以使这个功能起作用。我有点卡住了。

如果你能分享你的做法,我将不胜感激。

代码是:

#pragma once
#ifndef _XDEBUG_H_
#define _XDEBUG_H_

#include <stdio.h>
#include <stdarg.h>
#include <ctype.h>


class XDebug
{
public:

    static void __cdecl odprintf(const wchar_t *format, ...){
    wchar_t    buf[4096], *p = buf;
    va_list args;
    int     n;

            va_start(args, format);
            n = _vsnwprintf(p, sizeof buf - 3, format, args); // buf-3 is room for CR/LF/NUL
            va_end(args);

            p += (n < 0) ? sizeof buf - 3 : n;

            while ( p > buf  &&  isspace(p[-1]) )
                    *--p = '\0';

            *p++ = '\r';
            *p++ = '\n';
            *p   = '\0';

            OutputDebugString(buf);
    }

};

#endif

2 个答案:

答案 0 :(得分:3)

OutputDebugString Windows.h 中定义。您需要包含该标头才能使用该功能。

答案 1 :(得分:2)

看起来你还没有完成:

#include <windows.h>

OutputDebugString函数是Windows API的一部分。