2011-10-08 6 views
4

Visual C++의 출력 창에서 어떻게 인쇄합니까? 내가하고있는 프로젝트는 콘솔 윈도우 프로젝트 유형이 아닙니다. 그게 내가 만들고 실행하면 콘솔 창이 열리지 않습니다. 대신 win32 응용 프로그램을 엽니 다.이 응용 프로그램은 저에게 내장되어 있지 않습니다. 나는 단지 그것에 물건을 추가하고있다.Visual C++ IDE의 출력 창에 출력 인쇄

저는 C++을 처음 접했고 모든 콘솔에서 변수를 출력 할 수 없기 때문에 디버깅하기가 매우 어렵습니다.

Visual Studio 2010 프로젝트를 빌드하고 실행할 때 콘솔이 시작되지 않으므로 IDE의 출력 창에 변수 및 다른 출력물을 인쇄 할 수 있습니까?

도움 주셔서 감사합니다.

+2

없는 줄 주시기 바랍니다 프로그램을 디버그하십시오. 디버거 사용 방법을 익히십시오. –

+0

나는 노력하고있다. 하지만 C++에서 복사 한 모든 참조 및 값은 Java와 같은 상위 수준 언어에 익숙하므로 매우 혼란 스럽습니다. – Carven

답변

6

당신은 비주얼 스튜디오의 출력 창에 인쇄 할 OutputDebugString("...");을 사용할 수를 줄 수 있습니다. 그래도 #include <windows.h>해야합니다.

+0

나는 그것을 시도하고 작동합니다. 그러나이 작업을 수행 할 때 오류가 발생합니다. 'OutputDebugString ("point1 :"<< point1 [0] << ","<< point1 [1] << ","<< point1 [2] << endl); '이게 뭐가 문제 야? – Carven

+1

OutputDebugString은 표시 할 Null 종료 문자열 만 사용합니다. 함수에 전달하기 전에 수동으로 빌드해야합니다. [sprintf] (http://msdn.microsoft.com/en-us/library/ybk95axf%28v=vs.71%29.aspx) 기능을 살펴보십시오. – Darcara

0

Windows 기능 OutputDebugString (here 참조)을 사용하여 디버거에 출력을 보낼 수 있습니다. 이 출력은 VS 출력 창에 표시됩니다. 외부 애플리케이션으로 이러한 출력을 볼 수도 있습니다. DebugView.

출력에 (... 그렇지 않으면 DebugView와 같은 도구를 사용하여 가능한 것) 당신이이 디버그 메시지를 볼 수있는 다른 사람을 원하지 않는 경우 프로덕션 코드에서 이러한 진술을 제거하는 대신 인쇄

1

기억 다른 답변에 의해 표시된 VS 창에서 내 GUI 응용 프로그램에서 콘솔 창을 만든 다음 일반 printf 또는 cout 사용하여 디버깅 정보를 작성하는 것을 선호합니다. 디버거없이 실행하는 경우에도이 작업을 수행 할 수있는 이점이 있습니다.

콘솔을 설정하는 간단한 기능은 this site을 참조하십시오.

3

휴대용 TRACE 매크로를 작성했습니다.
MS-Windows의 경우 다른 답변에 표시된대로 OutputDebugString을 기반으로합니다. 여기

나는 내 작품을 공유

#ifdef ENABLE_TRACE 
# ifdef _MSC_VER 
# include <windows.h> 
# include <sstream> 
# define TRACE(x)       \ 
    do { std::stringstream s; s << (x);  \ 
      OutputDebugString(s.str().c_str()); \ 
     } while(0) 
# else 
# include <iostream> 
# define TRACE(x) std::clog << (x) 
# endif  // or std::cerr << (x) << std::flush 
#else 
# define TRACE(x) 
#endif 

예 :

#define ENABLE_TRACE //can depend on _DEBUG or NDEBUG macros 
#include "my_above_trace_header.h" 

int main (void) 
{ 
    int  v1 = 123; 
    double v2 = 456.789; 
    TRACE ("main() v1="<< v1 <<" v2="<< v2 <<'\n'); 
} 

이 좋은 방법으로 어떤 개선/제안/기여 ;-)

+1

std : string 전달 "const char *"유형의 인수가 "LPCWSTR"유형의 매개 변수와 호환되지 않습니다. – MaurGi