~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 3047A98385837486AED95EBB9E79A808__1717532580 ✰
Заголовок документа оригинал.:
✰ Conditional compilation - Wikipedia ✰
Заголовок документа перевод.:
✰ Условная компиляция — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Conditional_compilation ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/30/08/3047a98385837486aed95ebb9e79a808.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/30/08/3047a98385837486aed95ebb9e79a808__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 10:34:36 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 4 June 2024, at 23:23 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Условная компиляция — Википедия Jump to content

Условная компиляция

Из Википедии, бесплатной энциклопедии

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

Многие языки программирования поддерживают условную компиляцию. Обычно директивы компилятора определяют или «отменяют определение» определенных переменных ; другие директивы проверяют эти переменные и соответствующим образом изменяют компиляцию. Например, если не используется реальный язык, компилятор может быть настроен на определение «Macintosh» и отмену определения «PC», а код может содержать:

(* Общий код системы *) 
 если   Mac   !   =   Null   then 
     (* код, специфичный для macOS *) 
 else   if   pc   !   =   Null 
     (*код, специфичный для Windows *) 

В C и некоторых языках с похожим синтаксисом это делается с помощью директивы #ifdef .

Похожая процедура, получившая название « условный комментарий », используется Microsoft Internet Explorer версий с 5 по 9 для интерпретации HTML- кода. Существует также аналогичный запатентованный механизм добавления условных комментариев в JScript , известный как условная компиляция . [1]

Критика [ править ]

Когда условная компиляция зависит от слишком большого количества переменных, это может затруднить анализ кода, поскольку количество возможных комбинаций конфигурации увеличивается в геометрической прогрессии. [2] [3] [4] Когда условная компиляция выполняется с помощью препроцессора , который не гарантирует синтаксически правильный вывод на исходном языке, например препроцессора C , это может привести к трудно отлаживаемым ошибкам компиляции. [5] [6] [7] который иногда называют «адом #ifdef». [8] [9]

Ссылки [ править ]

  1. ^ «Условная компиляция» . Корпорация Майкрософт. Архивировано из оригинала 6 сентября 2008 г. Проверено 27 ноября 2011 г.
  2. ^ Газзилло, Пол; Вэй, Шии (27 мая 2019 г.). «Условная компиляция мертва, да здравствует условная компиляция!» (PDF) . ICSE-NIER '19: Материалы 41-й Международной конференции по программной инженерии: новые идеи и новые результаты . 41-я Международная конференция IEEE/ACM по разработке программного обеспечения: новые идеи и новые результаты (ICSE-NIER), 2019 г. Монреаль, Квебек, Канада: IEEE Press. стр. 105–108. doi : 10.1109/ICSE-NIER.2019.00035 . ISBN  978-1-7281-1758-4 . Архивировано (PDF) из оригинала 7 ноября 2022 г. Проверено 21 января 2023 г.
  3. ^ Мейнике, Йенс; Тум, Томас; Шретер, Реймар; Бендун, Фабиан; Лейх, Томас; Сааке, Гюнтер (2017). Мейнике, Йенс; Тум, Томас; Шретер, Реймар; Бендун, Фабиан (ред.). Обеспечение качества условной компиляции . Чам: Международное издательство Springer. стр. 131–139. дои : 10.1007/978-3-319-61443-4_12 . ISBN  978-3-319-61443-4 . Проверено 21 января 2023 г. {{cite book}}: |work= игнорируется ( помогите )
  4. ^ «Компилятор. Как условная компиляция влияет на качество продукта, безопасность и сложность кода?» . Обмен стеками программной инженерии . Проверено 21 января 2023 г.
  5. ^ Ле, Дюк; Уокингшоу, Эрик; Эрвиг, Мартин (18 сентября 2011 г.). «#ifdef подтвердил вредность: продвижение понятных вариаций программного обеспечения». Симпозиум IEEE 2011 по визуальным языкам и человеко-ориентированным вычислениям (VL/HCC) . стр. 143–150. дои : 10.1109/VLHCC.2011.6070391 . ISBN  978-1-4577-1246-3 .
  6. ^ «условная компиляция. Почему следует избегать #ifdef в файлах .c?» . Переполнение стека . Проверено 21 января 2023 г.
  7. ^ «С++ — что можно и чего нельзя делать при условной компиляции» . Переполнение стека . Проверено 21 января 2023 г.
  8. ^ Прешерн, Кристофер (3 июля 2019 г.). Шаблоны, которые помогут избежать ада #ifdef (PDF) . Материалы 24-й Европейской конференции по шаблонным языкам программ . ЕвроПЛоп '19. Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники. стр. 1–12. дои : 10.1145/3361149.3361151 . ISBN  978-1-4503-6206-1 . Архивировано (PDF) из оригинала 21 декабря 2022 г.
  9. ^ «Жизнь в аду #ifdef» . www.cqse.eu. ​ 28 октября 2015 г. Архивировано из оригинала 28 ноября 2022 г. Проверено 21 января 2023 г.
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 3047A98385837486AED95EBB9E79A808__1717532580
URL1:https://en.wikipedia.org/wiki/Conditional_compilation
Заголовок, (Title) документа по адресу, URL1:
Conditional compilation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)