OutputDebugString은 Windows 프로그래밍 환경에서 디버깅 세션에 디버깅 정보를 출력하는데 사용되는 함수이다.
이 함수는 프로젝트 문자집합 설정이 멀티바이트냐 유니코드냐에 따라 OutputDebugStringW 또는 OutputDebugStringA로 정의된다.
#ifdef UNICODE
#define OutputDebugString OutputDebugStringW
#else
#define OutputDebugString OutputDebugStringA
#endif // !UNICODE
먼저 Windows.h 를 포함하고 OutputDebugString 함수를 호출해 디버깅 세션에 출력할 문자열을 넘긴다.
ANSI 문자열을 사용하는 경우 그냥 출력하면 되고 유니코드 문자열을 출력할 땐 문자열 앞에 L 접두사를 붙이면 된다.
#include <Windows.h>
int main(void)
{
OutputDebugString("Debug information!!!\n");
return 0;
}
가변인자 받아서 출력하기
#include <Windows.h>
#include <cstdarg>
#include <cstdio>
void myDebugMsg(const char* format, ...)
{
#ifdef _DEBUG
char str[128];
va_list args;
va_start(args, format);
vsprintf(str, format, args);
OutputDebugString(str);
va_end(args);
#endif
}
int main(void)
{
OutputDebugString("Debug information!!!\n");
myDebugMsg("Hello %d %s\n", 5000, "world!");
return 0;
}
Visual Studio 디버그 출력창에 출력된 것을 볼 수 있다.
Release 모드로 빌드한 경우에는 OutputDebugString에 의한 출력이 무시된다.
'프로그래밍 > C++' 카테고리의 다른 글
C++ ] std::map 자료구조 사용법 (0) | 2023.09.23 |
---|---|
C++ ] 레지스트리 등록하여 윈도우 시작시 앱 자동 실행 하기 (0) | 2023.09.22 |
C++ ] 현재 실행중인 실행파일의 경로 얻기, GetModuleFileName (0) | 2023.09.19 |
C++ ] Winsock2의 bind 함수와 functional 헤더의 std::bind 함수 충돌 방지 (0) | 2023.09.17 |
C++ ] 멤버 함수 포인터 사용하기 / 함수포인터 대신 std::function 사용 / using으로 별칭 사용 (0) | 2023.09.15 |