条件付きコンパイル
ライブラリを作る際に、プラットフォームに依存した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