Критическая масса — в диалектической логике минимальное количество мыслей, необходимых для начала самоизливающейся цепной реакции деления с общественностью.
Условная компиляция: отрицательное условие
Вопрос задали в рассылке ruFlash. Дублирую мой вариант решения.
Суть вопроса в том, чтобы компилировать, либо один вариант кода, либо другой.
Такой вариант работать не будет.
Поэтому заводят два параметра и меняют из значения на противоположные:
Код:
<define> <name>TEST::on</name> <value>true</value> </define> <define> <name>TEST::off</name> <value>false</value> </define>
Если TEST::on == false и TEST::off == true, то мы увидим "off"
Но вот если оба равны true, то будет и "on" и "off"
А если false, то ничего не будет.
Меняя оба параметра вручную, рано или поздно, можно допустить ошибку. Да это и не удобно.
Чтобы упростить задачу, то есть менять только один параметр, можно воспользоваться такой хитростью:
Код:
<define> <name>TEST::mode</name> <value>true</value> </define> <define> <name>TEST::on</name> <value>true==TEST::mode</value> </define> <define> <name>TEST::off</name> <value>false==TEST::mode</value> </define>
Всего комментариев 48
Комментарии
![]() ![]() |
|
Здорово!
Только я бы попросил подредактировать цвета (а конкретнее желтый). Поберегите глаза тех, кто сидит на дефолтном стиле движка форума. |
![]() ![]() |
|
Цитата:
Поберегите глаза тех, кто сидит на дефолтном стиле движка форума.
|
![]() ![]() |
|
![]() ![]() |
|
Речь о конфигах в flex-config.xml
Хотя наверно, там тоже можно такое провернуть. Завтра проверю. |
![]() ![]() |
|
![]() ![]() |
|
![]() ![]() |
|
gloomyBrain, от части Вы правы, но не все так плохо))
//-define=TEST::on,true -define=TEST::off,!TEST::on //При if (TEST::on) { trace("on"); } //Получаем: trace("on"); //Тот же самый пример при on == false во флешку вообще ничего не запишется. //При -define=TEST::on,true -define=TEST::off,!TEST::on и if (TEST::on) { trace("on"); } else { trace("off"); } //Получаем: trace("on"); //И соответственно при on == false: trace("off"); //Все происходит именно так как мы и хотим. //И только когда начинаем использовать ! начинается хрунь(( //-define=TEST::on,true -define=TEST::off,!TEST::on и if (!TEST::on) { trace("off"); } //Получаем: if (!true)//Это все происходит из-за практически некакущей оптимизации, {//вот это можно было и вырезать trace("off"); } //Кошмарно согласен(( //При on == false: if (!false) { trace("off"); } |
|
Обновил(-а) iNils 08.02.2012 в 12:08
|
![]() ![]() |
|
Цитата:
ЗЫ
Вообще FlexSDK - это беда а не компилятор. |
![]() ![]() |
|
Цитата:
Абсолютно с Вами согласен.
|
![]() ![]() |
|
![]() ![]() |
|
Супер! Не знал о таких возможностях!
|
![]() ![]() |
|
@in4core Посмотри на генерируемый байт-код. Он по крайней мере не оптимален.
|
![]() ![]() |
|
Цитата:
И чем же интересно знать он вам не угодил? Приведите примеры и отличия
Так и останется в коде. Я уж и не говорю о: public static const FOO: int = getFoo() * 15; public static function getFoo():int {return 17;} Аналогично останется во флешке. Mxmlc, пожалуй, единственный компилятор(из тех что я знаю), который не делает, практически никаких, оптимизаций . Я уже не говорю о чем то более сложном (например: Развёртка, свёртка, объединение и разделение циклов;Вычисление инвариантов циклов, вынесение общих подвыражений и кода в ветвлениях, вынесение ветвлений из циклов и др). |
|
Обновил(-а) Inet_PC 09.02.2012 в 20:33
|
![]() ![]() |
|
Inet_PC, всё просто: лучше нету.
|
![]() ![]() |
|
2Psycho Tiger
Горько, но правда... |
![]() ![]() |
|
Цитата:
отдать в хорошие руки и цены бы ему не было.
|
![]() ![]() |
|
Цитата:
разве что Microsoft)))
|
![]() ![]() |
|
Inet_PC++ )
|
![]() ![]() |
|
Цитата:
Тем более у них SilverLight врядли они купят флеш.
|
![]() ![]() |
|
Кстати странно, что забили, вроде как интересная платформа была, и уже были компании которые брали разработчиков сл на работу, даже у нас в городе
|
![]() ![]() |
|
Ну вот что-то в слове "лень" есть
![]() |
![]() ![]() |
|
Microsoft Flash))))
а вообще, думаю, если бы они взялись, то делали бы по полной. И напихали бы туда .NET |
![]() ![]() |
|
Такие мелкие косяки компилятора ... Всё-равно основная нагрузка на 4 ядерник идет от отрисвоки на экране.
|
![]() ![]() |
|
Если одни и те же люди работают над одним и тем же проектом, а новых задач особо нет, то как истинный программисты, они просто "обязаны" заняться оптимизацией
![]() |
![]() ![]() |
|
Сколько иронии, ё-мое.)
|
![]() ![]() |
|
И нашелся на руси богатырь, расправившийся со всеми змеями адобовского компилятора ...
|
![]() ![]() |
|
люди просвещенные, подскажите пожалуйста, эта возможность только во флексе есть, или в FD тоже можно этим пользоваться? если можно то как?
|
![]() ![]() |
|
Не нашел я как прикрепить скрин к ответу, но
Project -> Properties... -> Compiler Options -> Compiler Constants |
![]() ![]() |
|
спасибо! но что-то все равно не получается =( где бы почитать про project-config.xml, и как его формировать?
|
![]() ![]() |
|
Почитайте вот здесь
|
![]() ![]() |
|
Спасибо! попробую разобраться.
|
![]() ![]() |
|
Цитата:
Если вы про компилятор, то уже отдали (почти, осталось в репу залить).
|
![]() ![]() |
|
Flex SDK, включая компилятор передали в Apache. Процесс еще не завершен, пока полностью передали только код фреймворка, включая svn историю. В последующем также будут переданы ныне разрабатываемые компиляторы Falcon и FalconJS.
|
![]() ![]() |
|
Спасибо, буду знать.
|
![]() ![]() |
|
Про модификации компилятора можно на хабре лянуть
|
Последние записи от iNils
- Плагин HighlightSelection для FD4 (25.02.2013)
- Условная компиляция: отрицательное условие (07.02.2012)
- Генерация текстовых таблиц для моноширинных шрифтов (25.01.2011)
- Плагин Fold (версия 0.3) для FlashDevelop 3 (26.10.2010)
- Плагин Fold для FlashDevelop 3 (версия 0.2) (27.01.2010)