C++Primer学習ノート:assertデバッグ&_FUNC__マクロ定義


assert()関数
NDEBUGマクロはStandard Cで定義されたマクロであり、assert()の動作を制御するのに特化している.このマクロが定義されている場合、assertは機能しません.
#ifdef NDEBUG
#define assert(x) ((void)0)
#else
...

C Standardではassertをマクロで実現することを規定している.
#ifdef NDEBUG
    #undef NDEBUG
    #include 
    #define NDEBUG
#else
    #include 
#endif // #ifdef NDEBUG

以上のコードをc/cppの一番上に置きます(もちろん、その後は他の#includeは現れません
マクロ定義の一部
C++は、デバッグ中に直接使用できる次のマクロを定義します.
__FILE__          
__LINE__          
__DATE__          
__TIME__            
__FUNC__             

上記のいくつかのマクロ定義は、再デバッグ中に使用できます.便利です.文字列で表されています.
void test()
{
    cout << __func__ << endl;
}

上のプログラムは文字列「test」を出力します