タグ

マクロに関するyowanoのブックマーク (3)

  • assert マクロを使う―C/C ―水無瀬の部屋

    assert( expression ) 関数型マクロ assert() は式 expression が 偽 の場合に診断メッセージを表示して関数 abort() を呼び出します。 ヘッダファイル assert.h がインクルードされる前にマクロ NDEBUG を定義するとマクロ assert() の呼び出しは除去されます。 assert() マクロは簡単な論理エラーを検出するために役立つ道具の一つです。 前提条件を仮定している場所に assert() マクロを挿入しておくと論理エラーを発見しやすくなります。 たとえば次のような前提条件を検査できます。 // 例えば引数にポインタ NULL を認めない関数の先頭で引数の仮定を検査するために // ポインタ p は NULL ではないはずだ! assert( p ); // ストリーム fp の現在位置はファイル終端ではないはずだ! asse

    yowano
    yowano 2013/10/28
    assertマクロの簡単な解説と実用例。
  • deleteを使うときのマクロ - ゲームが作れるようになるまでがんばる日記

    DirectXのサンプルを見ていたら、DXUT.hに確保したメモリを安全に解放するためのマクロがあったので引用。 #ifndef SAFE_DELETE #define SAFE_DELETE(p) { if (p) { delete (p); (p)=NULL; } } #endif #ifndef SAFE_DELETE_ARRAY #define SAFE_DELETE_ARRAY(p) { if (p) { delete[] (p); (p)=NULL; } } #endif #ifndef SAFE_RELEASE #define SAFE_RELEASE(p) { if (p) { (p)->Release(); (p)=NULL; } } #endifSAFE_RELEASEはインターフェイスの参照カウンタを減少させるもの。カウンタが0になったら解放される。 ポインタがNUL

    deleteを使うときのマクロ - ゲームが作れるようになるまでがんばる日記
  • ディレクティブ:# (シャープ) ##(シャープシャープ) - No1.バグクリエイターの雑記

    ■ディレクティブ C言語プリプロセッサのディレクティブは、シャープ(#)が頭に付く。 (ディレクティブ:プリプロセッサに対する命令) ■ # シャープ C言語では#(シャープ)はディレクティブの先頭につけるがその他にも使用方法が存在する。 1.ディレクティブの先頭文字 2.空白行 3.マクロ引数の文字列化 4.識別子の結合 ■ サンプルソース #define TEST1( str1 ) "str1"  // 引数関係無し #define TEST2( str1 ) str1    // 引数(文字列)を返す #define TEST3( str1 ) #str1   // 引数の変数名を文字列として扱う #                             // 空白行 // 引数の文字列と、##以前の文字列と結合し識別子として扱う #define TEST4( i , j ) st

    ディレクティブ:# (シャープ) ##(シャープシャープ) - No1.バグクリエイターの雑記
    yowano
    yowano 2013/08/08
    C言語のソースで扱われる#には、以下の用途がある。(1)ディレクティブの先頭文字。(2)空白行。(3)マクロ引数の文字列化。(4)識別子の結合。ただしこの用途では、##というように、#を二つ書く。
  • 1