OutputDebugString вызывает несогласованные ошибки - PullRequest
0 голосов
/ 26 марта 2012

У меня проблема, которая появляется и исчезает по таинственным причинам. Некоторое время назад, когда я начал проект, я нашел довольно удобную функцию, которая позволяет выводить окно отладки в VS2010. Некоторое время он работал отлично.

Теперь он отображает ошибки непоследовательно. Это означает, что иногда код будет компилироваться, иногда нет, и я не могу понять, почему код ниже вызывает ошибку. Это кажется почти случайным. Нажмите compile, error, снова нажмите compile, ничего не меняя, иногда error иногда отлично.

Вот как это выглядит с ошибкой:

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 ]

3 голосов
/ 26 марта 2012

OutputDebugString определяется в Windows.h .Вы должны включить этот заголовок, чтобы иметь возможность использовать эту функцию.

2 голосов
/ 26 марта 2012

Похоже, вы еще этого не сделали:

#include <windows.h>

Функция OutputDebugString является частью Windows API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...