Компиляция по условию

Иногда может быть необходимо использовать в библиотеке специфичный API для каждой платформы на которой компилируется код. В других случаях, вы можете захотеть сделать какую-либо оптимизацию, только если вы включили флаг ON. Для всех этих случаев вы можете использовать макрос компиляции по условию (условная компиляция).

Вот пример многоплатформенного кода :

    #if flash8
    // код haXe использующий специфику flash player 8
    #else flash
    // код haXe specific для flash (любой версии)
    #else js
    // код haXe для javascript
    #else neko
    // код haXe специфичный для neko
    #else error // будет выводить ошибку "Not implemented on this platform" (не реализовано на этой платформе)
    #end
</div>

А вот другой пример, для включения логирования, только если флаг mydebug выставлен при компиляции кода:

    #if mydebug
    trace("Some debug infos");
    #end
</div>

Отметьте, что нельзя использовать #else без переменной после. Следующий код неправилен:

    #if something
    // какой-либо код
    #else
    var i = 15;
    // что-то другое
    #end
</div>
Это будет интерпретировано как #else var и вы получите синтактическую ошибку.

Также можно определять собственные переменные, используя опции командной строки компилятора haXe.