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
参考にしたもの