Spec-Zone.ru › GCC 10 CPP

Следующая: Диагностика, Предыдущая: Макросы [Оглавление][Индекс]

4 Условные операторы ¶

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

Условный оператор в препроцессоре C в некотором смысле напоминает оператор if в языке C, но важно понимать разницу между ними. Условие в операторе if проверяется во время выполнения вашей программы. Его цель состоит в том, чтобы позволить вашей программе вести себя по-разному от запуска к запуску, в зависимости от данных, с которыми она работает. Условие в директиве условного оператора препроцессора проверяется при компиляции вашей программы. Его цель — позволить включить в программу различный код в зависимости от ситуации на момент компиляции.

Однако различие становится менее явным. Современные компиляторы часто проверяют операторы if при компиляции программы, если известно, что их условия не изменяются во время выполнения, и исключают код, который никогда не может быть выполнен. Если вы можете рассчитывать на то, что ваш компилятор это сделает, вы можете обнаружить, что ваша программа более читаема, если вы используете операторы if с постоянными условиями (возможно, заданными макросами). Конечно, вы можете использовать это только для исключения кода, а не для определений типов или других директив препроцессора, и вы можете сделать это только в том случае, если код остается синтаксически правильным, когда он не используется.

  • Использование условных операторов
  • Синтаксис условных операторов
  • Удалённый код

Следующая: Диагностика, Предыдущая: Макросы [Оглавление][Индекс]

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-10.5.0/cpp/Conditionals.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API