条件付きコンパイル

ライブラリを作る際に、プラットフォームに依存したAPIを使用したい場面はよくあります。あるいは、フラグをオンにしたときのみに最適化を働かせたい場面もあります。これらの場面では条件付きコンパイルマクロ(プリプロセッサマクロ)が役に立ちます。

以下はマルチプラットフォームのコード例です。

    #if flash8
    //flash8用のHaxeのコード
    #elseif flash
    //flash用のHaxeのコード
    #elseif js
    //javascript用のHaxeのコード
    #elseif neko
    //Neko用のHaxeのコード
    #else 
    //その他用のコード
        #error  // "Not implemented on this platform"というエラーが表示されます。
        #error "Custom error message" //"Custom error message"というエラーが表示されます。
    #end

否定接頭辞として!マークが使えます。PHPにコンパイルされる場合以外で使用するコードは以下のように書きます。

    #if !php
    // This code is not for PHP!
    #end

各プラットフォームに加えて、デバッグビルドを検出することも可能です。(-debugを設定した場合)

    #if debug
    trace("すべてのデバッグコンパイルに対するデバッグ情報!");
    #end

さらに、自分自身でコマンドラインオプションを定義して使うこともできます。(例では-D mydebugを設定):

    #if mydebug
    trace("Some personalized debug infos");
    #end

AND/OR論理演算子もサポートされています。

    #if (neko && mydebug)
    // Nekoの"mydebug"モードでのみ動作
    #end

    #if (flash || php)
    // flashとPHPのどちらかで動作
    #end

Haxeのコンパイラのバージョンでも分岐可能です。

#if haxe_210
    trace(" haxe version >= 2.10");
#else
    trace(" haxe version < 2.10");
#end

«« 省略可能な引数 | インライン化(inline) »»

version #19357, modified 2013-05-11 05:26:13 by shohei909