C言語例文集


 デバッグ用の関数の定義

 デバッグ用の関数dbg_printf(可変引数)を定義します。
 DEBUG_PRINTFが定義されていれば(サンプルプログラムの5行目)dbg_printf()を実行し、DEBUG_PRINTFが定義されいなければ、何も実行をしません。
 デバッグ用の関数はバグの発見や異常終了の原因等の解析に有用です。

<サンプルプログラム>

/****************************************************************************/
#include <stdio.h>
#include <stdarg.h>

// デバッグコードの定義
#define DEBUG_PRINTF

#ifdef DEBUG_PRINTF

// デバッグ用関数の定義
int dbg_printf(const char *format, ...)
{
    int r;
    va_list va;
    va_start(va, format);

    //  デバッグ用関数を使用する際は[DEBUG]と表示されるようにする
    r  = printf("[DEBUG]:"); 

    r += vprintf(format, va);
    va_end(va);

    return r;
}

#else
#define dbg_printf 1 ? (void) 0 : printf

#endif


int main()
{
    // 変数定義
    int i;
    int sum;

    // 変数の初期化
    sum = 0;

    // 1から10までの和を求める処理
    for(i = 1; i <= 10; i++)
    {
        sum += i;
        dbg_printf("sum(%2d) = %2d\n", i, sum);  // デバッグ用の関数を使用
    }

    // 合計の表示
    printf("sum(%2d) = %2d\n", 10, sum);

    return 0;
}

/****************************************************************************/

<実行結果>

左の結果:デバッグ用関数を使用(プログラム5行目でDEBUG_PRINTFを定義)
右の結果:デバッグ用関数を不使用(プログラム5行目「#define DEBUG_PRINTF」をコメントアウト)




<Topページ>

Copyright(c) 2010 , cgengor
このWebページの内容を無断で複製または転載することを禁じます。
このWebページの情報を利用することにより発生したいかなる損害について著作権保有者はいっさいの責任を負いません。