Иногда может быть необходимо использовать в библиотеке специфичный 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
А вот другой пример, для включения логирования, только если флаг mydebug выставлен при компиляции кода:
#if mydebug
trace("Some debug infos");
#end
Отметьте, что нельзя использовать #else без переменной после. Следующий код неправилен:
#if something
// какой-либо код
#else
var i = 15;
// что-то другое
#end
Это будет интерпретировано как #else var и вы получите синтактическую ошибку.
Также можно определять собственные переменные, используя опции командной строки компилятора
haXe.