2012/10/10

OutputDebugStringが曖昧な件

あまり使わないが、「OutputDebugString」という関数がある。

「std::cout」のように文字を出すものだが、標準出力ではなく、デバッガに出力している。

普通は次のように使う。

OutputDebugString( "abc" ); 

そして、別にこれと似たものが2つある。

OutputDebugStringW( L"abc" ); 

これもデバッガに文字列を出力するが、
違いは引数の文字列が「Unicode」でなければいけないということである。
ここでは、普通の文字列の前に「L」を置き、文字列をUnicodeにしている。

OutputDebugStringA( "abc" ); 

また、これもデバッガに文字列を出力するが、
こっちは引数の文字列は「SJIS」になる。


では、「OutputDebugString」とは何かというと、
ただ、文字コード別にさっきのどちらかにdefineされているだけらしい。

文字コードが「Unicode」なら「OutputDebugStringW」に、
「SJIS」なら「OutputDebugStringA」にというように。

まあ、書きなおせばいいのだが、たくさんあるときなどは次を追加するといい。

#ifdef UNICODE
#define OutputDebugString  OutputDebugStringW
#else
#define OutputDebugString  OutputDebugStringA
#endif

参考にしたもの
#pragma twice 206 Version 11.06 Unicode

0 件のコメント:

コメントを投稿