w AS3 można przekazać stałe do kompilatoraFlash/Flex warunkowa kompilacja "else"
-define+=CONFIG::DEBUG,true
i użyć go do kompilacji warunkowej tak:
CONFIG::DEBUG {
trace("This only gets compiled when debug is true.");
}
szukam czegoś jak #ifndef, więc mogę zanegować wartość debugowania i użyć go do warunkowego dodania kodu zwolnienia. Jedyne rozwiązanie, jakie znalazłem do tej pory, było w wersji w Adobe i ponieważ moje konfiguracje debugowania i wydania wzajemnie się wykluczają, nie podoba mi się pomysł posiadania stałych DEBUG i RELEASE.
Ponadto format ten działa, ale jestem przy założeniu, że to działa sprawdzanie w czasie wykonywania których nie jest to, co chcę:
if (CONFIG::DEBUG) {
//debug stuff
}
else {
//release stuff
}
ja również rozważyć robi coś takiego, ale wciąż nie jest eleganckie rozwiązanie miałem nadzieję na:
-define+=CONFIG::DEBUG,true -define+=CONFIG::RELEASE,!CONFIG::DEBUG
z góry dzięki :)
Wydaje się być rozsądnym. Z drugiej strony, kompilator Flash/Flex może być głupi, tak jak mówisz, sprawdziłbym go przed użyciem, jeśli wydajność naprawdę ma dla ciebie znaczenie. – aaaidan
-1. Konstrukcja * if/else * nie działa. Prosty test, aby to udowodnić: [Osadź] ciężki plik w takim bloku if/else. Jeśli wyjściowy rozmiar pliku zmieni się odpowiednio, to działa, inaczej nie. Również taki blok if/else powoduje błędy składni, gdy jest używany poza funkcją, która prowadzi do wniosku, że blok kodu nie zostanie usunięty! – bummzack
Tak, myślę, że ta technika polega za bardzo na efekcie ubocznym optymalizatora. Kompilacja warunkowa jest znacznie lepsza. Jeśli potrzebujesz czegoś takiego jak #ifndef, zobacz moją odpowiedź poniżej. –