デバッグ時のみ有効なマクロ


デバッグのときだけ処理を行うマクロを作ります
と言ってもプリプロセッサで条件分岐してるだけですが
//デバッグ時のみ画面に出力するマクロ
#include <stdio.h>
#include <tchar.h>

#ifdef _DEBUG
#define TEST_FUNC()     { printf("デバッグ中\n"); }
#else
#define TEST_FUNC()     { ; }
#endif

int _tmain()
{
    TEST_FUNC();
    return 0;
}
_DEBUGが定義されているときと、そうでないときの2パターン用意します
定義されていないときは「何もしない」でおきます
こうすることでTEST_FUNC()はデバッグのときだけ有効になります
これを利用してデバッグ時のみ処理するprintfっぽいマクロを作ってみます
//デバッグ時のみ有効なマクロ
#include <stdio.h>
#include <tchar.h>
#include <locale.h>

#ifdef _DEBUG
#define DbgPrintf(tFormatStr, ...)     {\
    ::_tprintf_s(tFormatStr, __VA_ARGS__);\
    }
#else
#define DbgPrintf(tFormatStr, ...)     { ; }
#endif

int _tmain()
{
    int     iNum = 123;

    //ロケールの設定
    ::_tsetlocale(LC_ALL, TEXT("japanese"));

    DbgPrintf(_T("デバッグ文字列\n"));
    DbgPrintf(_T("iNum = %d"), iNum);

    return 0;
}
デバッグ時(_DEBUGがdefineされているとき)だけ表示される
DbgPrintf
可変長引数のマクロなのでprintfのようにいくつでも引数を渡すことができます
またUNICODEとマルチバイト文字列両方に対応します
ただし、UNICODEでコンパイルする場合、ロケールの設定をしないとうまく表示できないようです


TOPプログラミング>デバッグ時のみ有効なマクロ