デバッグ時のみ有効なマクロ
デバッグのときだけ処理を行うマクロを作ります
と言ってもプリプロセッサで条件分岐してるだけですが
//デバッグ時のみ画面に出力するマクロ
#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されているとき)だけ表示される

可変長引数のマクロなのでprintfのようにいくつでも引数を渡すことができます
またUNICODEとマルチバイト文字列両方に対応します
ただし、UNICODEでコンパイルする場合、ロケールの設定をしないとうまく表示できないようです
TOP>プログラミング>デバッグ時のみ有効なマクロ