printf 와 wprintf


아래 내용은 결국 실패!
계속 확인해보기 위해 삭제는 안함.




wprintf는 찾아보면 아시겠지만 wide string의 printf 버전이다.
wprintf : formatted wide-character output conversion (Man 페이지)

printf와 wprintf는 동시에 사용할 수 없다.
Application을 시작시에 가장 먼저 호출되는 녀석이 stdout을 잡아서 그렇다.

문제는 여기서 발생한다.

wprintf를 사용하는 debug wrapper가 있는데
printf가 먼저 stdout을 잡아버린 상황
난 이 debug wrapper를 건드리지 않고 출력하고 싶었다.
거기다가 file, line, func까지 같이 출력해주면 더욱 좋겠지

 #undef WDEBUG  
 #define WDEBUG(t, ...) {\  
     wchar_t wcs[BUFSIZ]; \  
     swprintf(wcs, BUFSIZ, __VA_ARGS__); \  
     printf("%s %d %s : %S\n", __FILE__, __LINE__, __func__, wcs); \  
   }\  
 WDEBUG(WARN, L"TEST %02d", i);  


더 좋은 방법은 있겠지만 디버깅용이므로 여기서 만족
BUFSIZ가 보통 40960이므로 너무 크긴 하네..



댓글

이 블로그의 인기 게시물

WSL2 Ubuntu 20.04 및 네트워크 설정

리눅스 멀티코어를 사용하는 tar 압축/해제

WSL에 X-Window로 Terminator 설치하고 Minicom까지