25.2.2 #if 文

#ifdef 文に対してより一般的な #if 文も用意されてい ます。この場合、#if の後ろには定数式を指定します。定数式 には、プログラム中の変数などは使えない点に注意しましょう(プログラム がコンパイルされる以前に処理されるのですから当然ですね)。 最も良く使われるのが、defined() 文と共に使う場合です。 defined() はマクロ定義がされいているか否かを判別します。 マクロ定義がされていない場合の判別には、否定演算 ! と共に !defined() のように使います。例えば、次の例では マクロ定義 List または LIST が定義されている場合に有効になるような 例です。

    #if defined(List) || defined(LIST)
    struct List {
    	struct List *next;
        void *data;
    };
    typedef struct List LIST;
    #endif

このように ||&& などの演算や、比較は プリプロセッサでも使う事が出来ます。次の例は数値を比較している 場合です。

    #if defined(BSIZE) && ( BSIZE < 512 )
        #undef BSIZE
        #define BSIZE 1024
    #endif

この場合、マクロ定義 BSIZE があり、それが 512 より小さいならば、 その定義を 1024 に変更しています。



最初のページ 戻る 次へ 最後のページ 目次
Hiroyasu Asami