[C# | FAQ] Условная компиляция

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by dober.man, 17 Jan 2010.

  1. dober.man

    dober.man Banned

    Joined:
    9 Dec 2009
    Messages:
    6
    Likes Received:
    8
    Reputations:
    4
    Появилась недавно у меня задача компиляции программы под разные устройства. Ряд устройств в моём случае обладают специфическими возможностями и для них задействуются специальные библиотеки, а для некоторых обычных устройств — эти библиотеки надо исключать. Можно конечно комментировать каждый раз — но включений довольно много и такой подход весьма проблематичен. Но есть очень хороший выход из этой ситуации, называется он условная компиляция.
    Для условной компиляции используются директивы: #define, #if, #else, #endif.
    Как обычно долго рассуждать как это использовать не буду, просто приведу пример:
    Code:
    #define PARAM1
    #if PARAM1
    Console.Write("Defined PARAM1");
    #else
    Console.Write("Not defined PARAM1");
    #endif
    При этом будет скомпилирован код:
    Code:
    Console.Write("Defined PARAM1");
    Code:
    //#define PARAM1
    #if PARAM1
    Console.Write("Defined PARAM1");
    #else
    Console.Write("Not defined PARAM1");
    #endif
    При этом будет скомпилирован код:
    Code:
    Console.Write("Not defined PARAM1");
    Вот и всё.
     
  2. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    безумно познавательно =\
     
  3. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    [C# | FAQ] Условное выполнение блока

    Появилась у меня задача выполнить условный блок кода.

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

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

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


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

    dober.man Banned

    Joined:
    9 Dec 2009
    Messages:
    6
    Likes Received:
    8
    Reputations:
    4
    Ой, да ладно?! Не ожидал, что такое напишет тот, кому нужно на 6 страниц расписать тему, чтобы он воткнул как выполнить JS-скрипт в контроле WebBrowser!
     
  5. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Кто-то путает цифры и WebBrowser с mshtml, COM и маршаллингом ;)
     
  6. dober.man

    dober.man Banned

    Joined:
    9 Dec 2009
    Messages:
    6
    Likes Received:
    8
    Reputations:
    4
    Не не не! 6 страниц по 10 сообщений! И об mshtml вы узнали только где-то на 4ой! ;)
    Торчки блин! С помощью условной компиляции, можно совершенно не беспокоиться, к примеру, о версии фреймворка на машине клиента! Я то понимаю, что привел пример из разряда простейших, только вот что-то посерьезней ваш мозг не осилит!
     
  7. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    За оскорбление участников форума бан. Для начала на 5 дней.