Условная компиляция

Иногда вам может понадобиться создать библиотеку, использующую специфический 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

«« Необязательные параметры | Встраивание (inline) »»

version #10170, modified 2011-02-13 11:08:32 by Scythian