なぜWinCEでprintfとRETAILMSGで表示されるメッセージに違いがあるのでしょうか?
Windows CEではprintfとRETAILMSGは異なる印字関数です。printfは標準Cライブラリ関数であり、コンソールまたは出力デバイスにメッセージを印字します。通常デバッグ時に使用され、デバッグ情報を画面に直接出力できます。printf関数の出力は標準出力ストリームstdoutに直接印字されますが、Windows CEでは標準出力ストリーム(stdout)はデバイスの画面に関連付けられていません。そのためprintf関数の出力は直接画面に表示されるのではなく、デバッガの出力ウィンドウなど他の場所にリダイレクトされます。RETAILMSGはWindows CEの宏であり、デバッグ版とリリース版の両方でデバッグ情報を印字します。デバック情報の出力先はデバッガの出力ウィンドウ、カーネルログファイル(KERNEL.LOG)、シリアルポートからの出力です。RETAILMSGはWindows CEのデバッグ版で定義されており、リリース版では無効です。このため、printfとRETAILMSGの出力が異なる場合があります。これはその出力方法と出力が異なることが主な原因です。Windows CEでデバッグ情報を画面に直接出力する場合は、MessageBoxまたはOutputDebugStringのようにプラットフォームに依存した他の関数またはメソッドの使用を検討してください。