川合のプログラミング言語自作のためのテキスト第四版#001

(1) デバッグレベル

(2) a_malloc(), a_free(), a_realloc()

(3) a_ というマクロ

(4) acl4v2_001.c

#if (!defined(a_DbgLv))
    #define a_DbgLv     2
#endif

#if (!defined(a_NoUse_OutOfMemoryCheck))
    #define a_NoUse_OutOfMemoryCheck    0
#endif

#if (a_Version > 0)
    #define DbgLv            a_DbgLv
    #define errExit          a_errExit
    #define DM               a_DM
    #define malloc_          a_malloc
    #define free_            a_free
    #define realloc_         a_realloc
    #define free1            a_free1
    #define realloc1         a_realloc1
    #define malloc_testAll   a_malloc_testAll
#endif

#if (a_DbgLv >= 1)
    #define a_DbgLv1(x) x
#else
    #define a_DbgLv1(x)
#endif

#if (a_DbgLv >= 2)
    #define a_DbgLv2(x) x
    #define a_          __FILE__, __LINE__,
    #define a__         __FILE__, __LINE__
    #define a_def       const char *a_fil, int a_lin,
    #define a_def_      const char *a_fil, int a_lin
    #define a_thr       a_fil, a_lin,
    #define a_thr_      a_fil, a_lin
#else
    #define a_DbgLv2(x)
    #define a_
    #define a__
    #define a_def
    #define a_def_
    #define a_thr
    #define a_thr_
#endif

////

a_static void a_errExit0(const char *f, ...)
{
    va_list ap;
    va_start(ap, f);
    vfprintf(stderr, f, ap);
    va_end(ap);
    fprintf(stderr, "\n");
    exit(1);
}

#if (!defined(a_errExit))
    #define a_errExit   a_errExit0
#endif

#define a_DM	a_DbgLv2( fprintf(stderr, "%s(%d): DebugMessage\n", __FILE__, __LINE__); )
#define a_malloc_testAll(flg)	a_DbgLv2(a_MallocMan_testAll(a_mallocMan, flg))

////

こめんと欄


コメントお名前NameLink

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS