Spec-Zone.ru › GCC 6 CPP

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

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

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

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

GCC версии 3 устраняет этот вид кода, который никогда не выполняется, даже без оптимизации. Более старые версии делали это только при оптимизации.

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

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

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

Spec-Zone.ru

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