OberonCore https://forum.oberoncore.ru/ |
|
Замена условным директивам ifdef https://forum.oberoncore.ru/viewtopic.php?f=29&t=2062 |
Страница 3 из 3 |
Автор: | nail_kh [ Воскресенье, 22 Апрель, 2012 20:33 ] |
Заголовок сообщения: | Re: Замена условным директивам ifdef |
Rifat писал(а): Я считаю, что хоть в каком-нибудь виде, но препроцессор необходим. Например, в заголовочных файлах Windows при определении различных констант и т.д часто определение зависит от версии Windows для которой компилируется программа, от того 32 битная или 64 битная программа, UNICODE или нет. Вот кусок кода из WinUser.h Код: #if (_WIN32_WINNT >= 0x0500) #define WM_MOUSELAST 0x020D #elif (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) #define WM_MOUSELAST 0x020A #else #define WM_MOUSELAST 0x0209 #endif /* (_WIN32_WINNT >= 0x0500) */ Все эти комбинации по разным модулям разнести практически невозможно, так получится "комбинаторный взрыв". Вот как раз для таких случаев был бы полезен препроцессор. В ЧЯ уже есть встроенная возможность скрывать часть кода от компилятора. Достаточно выделить его из создать для него Fold (Toosl->Create Fold). Осталось лишь сделать условное открывани/закрывание этих фрагментов кода. И это было бы намного удобней чем текст наводненный всевозможными IFDEF. Выбрал нужную опцию и перед тобой текст именно в том виде, который будет с этой опцией скомпилирован. И что самое главное - это можно реализовать в виде примочки к среде, без внесения изменений в язык программирования. |
Автор: | nail_kh [ Воскресенье, 22 Апрель, 2012 20:45 ] |
Заголовок сообщения: | Re: Замена условным директивам ifdef |
Oleg N. Cher писал(а): Владислав Жаринов писал(а): Ещё по теме. Аналог препроцессора может быть достигнут в ББ с помощью селекторов. http://oberoncore.ru/wiki/blackbox/devselectors viewtopic.php?f=1&t=435 Я тут предлагал Fold открываемые по условию, а оказалось что изобретал велосипед. Все в ББ уже сделано с помощью селекторов. |
Страница 3 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |