РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
37 of 815 menu

Директива #if

Директива #if относится к директивам препроцессора C++ и позволяет компилятору включать или исключать блоки кода до начала основной компиляции. В качестве параметра директива принимает константное выражение, вычисляемое препроцессором. Если выражение истинно (не равно 0), код между #if и соответствующей директивой #endif участвует в компиляции. Если выражение ложно (равно 0), этот код игнорируется. Дополнительно можно использовать ветви #elif и #else для организации множественных условий.

Синтаксис

#if константное_выражение // код, который компилируется, если выражение истинно #elif другое_выражение // код, который компилируется, если первое ложно, а второе истинно #else // код, который компилируется, если все предыдущие условия ложны #endif

Пример

Давайте включим один из двух блоков кода в зависимости от значения макроса VERSION:

#include <iostream> using namespace std; #define VERSION 2 int main() { #if VERSION == 1 cout << "Version 1" << endl; #elif VERSION == 2 cout << "Version 2" << endl; #else cout << "Unknown version" << endl; #endif return 0; }

Результат выполнения кода:

"Version 2"

Пример

Давайте проверим, определён ли макрос DEBUG, и выведем отладочное сообщение только при его наличии:

#include <iostream> using namespace std; #define DEBUG int main() { #if defined(DEBUG) cout << "Debug mode" << endl; #else cout << "Release mode" << endl; #endif return 0; }

Результат выполнения кода:

"Debug mode"

Пример

Давайте сравним числовое значение макроса LEVEL с порогом и выберем соответствующий блок:

#include <iostream> using namespace std; #define LEVEL 5 int main() { #if LEVEL > 3 cout << "High level" << endl; #else cout << "Low level" << endl; #endif return 0; }

Результат выполнения кода:

"High level"

Смотрите также

  • директива #ifdef,
    которая проверяет, определён ли макрос
  • директива #ifndef,
    которая проверяет, не определён ли макрос
  • директива #endif,
    которая закрывает блок условной компиляции
  • оператор if,
    который выполняет ветвление во время работы программы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить