OutputDebugString() を使用して整数またはオプションで浮動小数点数を出力する方法について、しばらくの間 Web で検索してきました。このコマンドを使用して、外部実行可能ファイルからコンソールに直接デバッグ データを書き込むことができれば、より簡単になります。ただし、const charでのみ動作するようになりました。私が見つけた解決策は古かったので、Web から直接コードをコピーして貼り付けようとしましたが、うまくいきませんでした。コードを変更した後でも、正しく型キャストすることができませんでした。OutputDebugString に何かをできるだけきれいに型キャストするのを手伝ってくれる人はいますか?それはデバッグのみを目的としているため、より複雑で不格好な型キャスト IF を可能にするよりも、コードを短くして読みやすくします。どうもありがとう!
2 に答える
1
OutputDebugString は文字列のみを受け取ることができます。書式設定された出力が必要な場合は、OutputDebugString に渡す前に自分で行う必要があります。MSVC を使用している場合は、_CrtDbgReport または _CrtDbgReportW を使用することをお勧めします。可変個引数マクロをサポートする最近のバージョンの MSVC では、次を使用します。
#if !defined(_RPTW)
#if defined(_DEBUG)
#define _RPTW(pszFmt, ...) _CrtDbgReportW(_CRT_WARN, NULL, __LINE__, NULL, (pszFmt), __VA_ARGS__)
#define _RPTW_(dest, fmt, ...) _CrtDbgReportW((dest), NULL, __LINE__, NULL, (pszFmt), __VA_ARGS__)
#else
#define _RPTW(pszFmt, ...)
#define _RPTW(dest, pszFmt)
#endif
#endif // #if !defined(_RPTW)
#if !defined(_RPTA)
#if defined(_DEBUG)
#define _RPTA(pszFmt, ...) _CrtDbgReport(_CRT_WARN, NULL, __LINE__, NULL, (pszFmt), __VA_ARGS__)
#define _RPTA_(dest, fmt, ...) _CrtDbgReport((dest), NULL, __LINE__, NULL, (pszFmt), __VA_ARGS__)
#else
#define _RPTA(pszFmt, ...)
#define _RPTA_(dest, pszFmt)
#endif
#endif // #if !defined(_RPTA)
#if !defined(_RPTT)
#if defined(_UNICODE)
#define _RPTT _RPTW
#define _RPTT_ _RPTW_
#else
#define _RPTT _RPTA
#define _RPTT_ _RPTA_
#endif
#endif // #if !defined(_RPTT)
2 番目の形式では、異なるレベルのレポートを提供できます (_CRT_WARN の代わりに _CRT_ASSERT または c_CRT_ERROR)。
于 2018-03-25T02:48:24.380 に答える