PDA

Просмотр полной версии : [C# | FAQ] Условная компиляция


dober.man
17.01.2010, 17:09
Появилась недавно у меня задача компиляции программы под разные устройства. Ряд устройств в моём случае обладают специфическими возможностями и для них задействуются специальные библиотеки, а для некоторых обычных устройств — эти библиотеки надо исключать. Можно конечно комментировать каждый раз — но включений довольно много и такой подход весьма проблематичен. Но есть очень хороший выход из этой ситуации, называется он условная компиляция.
Для условной компиляции используются директивы: #define, #if, #else, #endif.
Как обычно долго рассуждать как это использовать не буду, просто приведу пример:
#define PARAM1
#if PARAM1
Console.Write("Defined PARAM1");
#else
Console.Write("Not defined PARAM1");
#endif
При этом будет скомпилирован код:
Console.Write("Defined PARAM1");

//#define PARAM1
#if PARAM1
Console.Write("Defined PARAM1");
#else
Console.Write("Not defined PARAM1");
#endif
При этом будет скомпилирован код:
Console.Write("Not defined PARAM1");
Вот и всё.

desTiny
17.01.2010, 19:11
безумно познавательно =\

nerezus
17.01.2010, 19:44
Появилась у меня задача выполнить условный блок кода.

Для условного выполнения блока кода используются операторы: if else.
Как обычно долго рассуждать как это использовать не буду, просто приведу пример:


if (param) {
Console.Write("Param is true");
} else {
Console.Write("Param is false");
}


bool param = true;
При этом будет выполнен код:
Console.Write("Param is true");

bool param = false;
При этом будет выполнен код:
Console.Write("Param is false");

Вот и всё.


Update: Если кто не понял - то это "ирония".

dober.man
17.01.2010, 20:17
Update: Если кто не понял - то это "ирония".
Ой, да ладно?! Не ожидал, что такое напишет тот, кому нужно на 6 страниц расписать тему, чтобы он воткнул как выполнить JS-скрипт в контроле WebBrowser!

nerezus
17.01.2010, 20:22
Ой, да ладно?! Не ожидал, что такое напишет тот, кому нужно на 6 страниц расписать тему, чтобы он воткнул как запустить JS-скрипт в контроле WebBrowser! Кто-то путает цифры и WebBrowser с mshtml, COM и маршаллингом ;)

dober.man
17.01.2010, 20:40
Кто-то путает цифры и WebBrowser с mshtml, COM и маршаллингом ;)
Не не не! 6 страниц по 10 сообщений! И об mshtml вы узнали только где-то на 4ой! ;)
ТС, гений!!!
Однозначно!!!
Торчки блин! С помощью условной компиляции, можно совершенно не беспокоиться, к примеру, о версии фреймворка на машине клиента! Я то понимаю, что привел пример из разряда простейших, только вот что-то посерьезней ваш мозг не осилит!

nerezus
17.01.2010, 21:24
Я то понимаю, что привел пример из разряда простейших, только вот что-то посерьезней ваш мозг не осилит! За оскорбление участников форума бан. Для начала на 5 дней.