2012-03-26 3 views
0

신비한 이유로 표시되고 사라지는 문제가 있습니다. 내가 프로젝트를 시작할 때 VS2010에서 디버그 창 출력을 허용하는 상당히 편리한 기능을 발견했습니다. 그것은 잠시 동안 위대한 일을했습니다.OutputDebugString이 일치하지 않는 오류를 일으키는 경우

이제 오류가 일관성없이 표시됩니다. 즉, 때로는 코드가 컴파일 될 때가 있고 때로는 그렇지 않을 수도 있으며, 오류를 일으키는 코드가있는 이유를 찾을 수 없습니다. 거의 무작위로 보인다. 누르면 컴파일, 오류, 언론 때로는 오류가 잘 때로는 아무것도 변경하지 않고 다시 컴파일합니다.

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

그것은 당신이하지 않은 다음과 같습니다

#include <windows.h> 

OutputDebugString 기능은 윈도우 API의 일부입니다.

3

OutputDebugString있는 Windows.h에 정의되어 있습니다. 해당 기능을 사용하려면 헤더를 포함시켜야합니다.

+0

해결해 주셔서 감사합니다. 때때로 컴파일 할 이유가 여전히 의아해했습니다. 감사합니다. –

관련 문제