У меня проблема, которая появляется и исчезает по таинственным причинам. Некоторое время назад, когда я начал проект, я нашел довольно удобную функцию, которая позволяет выводить окно отладки в 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