Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Применение директив условной компиляции, C#

Автор: Vladimirll
Дата сообщения: 20.05.2016 22:37
Здравствуйте !
Подскажите пожалуйста, для чего в этой программе используются директивы условной компиляции, программа рабочая ( #if, #elif, #else, #endif ) ?
Можно же написать программу без них. Как-то не понятно для чего тут директивы, воспринимается это как не нужная выдумка. Может это и нужно, но когда и в каких ситуациях представить не могу ???

// Листинг 12.4. Применение директив условной компиляции
// #define VAR1
// #define VAR2

using System;
namespace Pavlovs_289._1
{
class Class1
{
#if VAR1
static void F(){ Console.WriteLine( "Вариант 1" ); }
#elif VAR2
static void F(){ Console.WriteLine( "Вариант 2" ); }
#else
static void F(){ Console.WriteLine( "Основной вариант" ); }
#endif
static void Main()
{
F();
Console.ReadKey();
}
}
}
Автор: VladimirMagus
Дата сообщения: 21.05.2016 03:49
Это нужно к примеру для того случая, когда ты делаешь полную и урезанную версию программы. Директивами ты размечаешь участки кода, что не войдут в урезанную версию.

А вообще - глянь коротенькое видео на ютюбе.
Автор: Vladimirll
Дата сообщения: 21.05.2016 16:51
VladimirMagus


Спасибо !

Можете еще немного пояснить, в смысле принципиального понимания ?

Использование директив препроцессора : они используются для того, чтобы исключить компиляцию отдельных частей программы.

На примере данной программы, что здесь происходит по другому работа компилятора, чем в обычной программе, без директив препроцессора ?
Автор: NeoAnomaly
Дата сообщения: 21.05.2016 19:03

Цитата:
Можете еще немного пояснить, в смысле принципиального понимания ?

Vladimirll, думаю, для принципиального понимания стоит уяснить, что в начале исходный текст обрабатывается препроцессором, а только потом отдаётся компилятору. Директивы условной компиляции - это инструкции для препроцессора: каким образом обработать текст.

В случае с условной компиляцией, препроцессор убирает из исходного кода блоки, которые заключены между директивами с результатом проверки FALSE.

Т.е. другими словами, например:


Код:
#if VAR1
static void F(){ Console.WriteLine( "Вариант 1" ); }
#else
static void F(){ Console.WriteLine( "Основной вариант" ); }
#endif
Автор: Vladimirll
Дата сообщения: 22.05.2016 22:21
NeoAnomaly


Спасибо !

Ваше пояснение по существу( практично !!! ), что я и хотел понять !

И последнее, зачем в программе используется подход такого рода, через директивы условной компиляции ? ( в данном случае #if, #elif, #else, #endif )



В каких ситуациях необходим такой подход ?

Автор: Alexzzy
Дата сообщения: 23.05.2016 02:45
Vladimirll
Ну ведь ответили уже.

Цитата:
Это нужно к примеру для того случая, когда ты делаешь полную и урезанную версию программы.

Еще варианты - сборка программы под разные операционные системы, библиотеки, компоненты и т.п., когда код может отличаться.

Страницы: 1

Предыдущая тема: Програмирование контроллера клавиатуры


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.