« hosts書き換えると警告 | トップページ | 訂正:hosts書き換えると警告 »

[メモ] OutputDebugStringに書式指定を

OutputDebugStringで書式指定ができるようにするコード。ただし、C++。

昔はどうだったかはわからんけど、今のOutputDebugStringはマクロなので、置き換えてしまえば良い。

#ifdef OutputDebugString
#undef OutputDebugString
#endif
#ifdef UNICODE
#define OutputDebugString  OutputDebugStringFW
#define OutputDebugStringV OutputDebugStringFVW
#else
#define OutputDebugString  OutputDebugStringFA
#define OutputDebugStringV OutputDebugStringFVA
#endif // !UNICODE
void OutputDebugStringFA( const char *format, ... )
{
    va_list args;
    va_start( args, format );
    OutputDebugStringFVA( format, args );
    va_end( args );
}
void OutputDebugStringFW( const wchar_t *format, ... )
{
    va_list args;
    va_start( args, format );
    OutputDebugStringFVW( format, args );
    va_end( args );
}
void OutputDebugStringFVA( const char *format, va_list args )
{
    int len = _vscprintf( format, args ) + 1;
    char * buffer = new char[len];
    vsprintf_s( buffer, len, format, args );
    OutputDebugStringA( buffer );
    delete[] buffer;
}
void OutputDebugStringFVW( const wchar_t *format, va_list args )
{
    int len = _vscwprintf( format, args ) + 1;
    wchar_t * buffer = new wchar_t[len];
    vswprintf_s( buffer, len, format, args );
    OutputDebugStringW( buffer );
    delete[] buffer;
}

別途windows.hをインクルードとか、プロトタイプ宣言とかをする必要がある。

|

« hosts書き換えると警告 | トップページ | 訂正:hosts書き換えると警告 »

趣味」カテゴリの記事

コメント

この記事へのコメントは終了しました。