Условная компиляция
Иногда вам может понадобиться создать библиотеку, использующую специфический API, зависящий от платформы компиляции. В другой раз, вы можете захотеть осуществить некоторую оптимизацию, только если установлен какой-либо флаг. Для этих случаев применяются макросы условной компиляции (макросы препроцессора):
Вот пример кода для нескольких платформ:
#if flash8 // Haxe-код, специфичный для flash player 8 #elseif flash // Haxe-код, специфичный для платформы flash (любой версии) #elseif js // Haxe-код, специфичный для javascript #elseif neko // Haxe-код, специфичный для neko #else // что-то другое #error // отобразит сообщение об ошибке - не реализовано // на данной платформе ("Not implemented on this platform") #end
There is also a not prefix, which is the exclamation mark. So for a block that is compiled for every plaform except for PHP, you can do:
#if !php // This code is not for PHP! #end
Кроме определения платформ, можно узнать был ли включен режим отладки при компиляции (флаг -debug компилятора):
#if debug trace("Отладочная информация для всех!.. Даром!.. Сколько угодно..."); #end
Вы можете определить собственные переменные, используя опции компилятора Haxe (к примеру -D mydebug):
#if mydebug trace("Ты должен сделать добро из зла, потому что его больше не из чего сделать."); #end
Доступны логические операторы и/или:
#if (neko && mydebug) // только в режиме "mydebug" для Neko #end #if (flash || php) // Код работает на flash или PHP #end