Пространства имён
Варианты
Действия

Preprocessor

Материал из cppreference.com
< cpp
 
 
Язык С++
Общие темы
Управление программой
Операторы условного выполнения
Операторы повторения
Операторы перехода
Функции
объявление функции
объявление лямбда-функции
шаблон функции
спецификатор inline
спецификаторы исключений (устарело)
спецификатор noexcept (C++11)
Исключения
Пространства имён
объявление пространства имён
псевдонимы пространства имён
Типы
спецификатор decltype (C++11)
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор constexpr (C++11)
спецификатор auto (C++11)
спецификатор alignas (C++11)
Инициализация
Литералы
Выражения
Утилиты
Типы
typedef-объявление
объявление псевдонима типа (C++11)
атрибуты (C++11)
Приведения типов
неявные преобразования
const_cast-преобразование
static_cast-преобразование
dynamic_cast-преобразование
reinterpret_cast-преобразование
C-подобное и функциональное приведение типов
Выделение памяти
Классы
Особые свойства классовых функций
Специальные функции-члены
Шаблоны
шаблон класса
шаблон функции
специализация шаблона
упакованные параметры (C++11)
Разное
Ассемблерные вставки
 
 

Препроцессор работает до компиляции. Результат препроцессора - один файл, который передается реальному компилятору.

[править] Директивы

Директивы препроцессора контролируют поведение препроцессора. Каждая директива занимает одну строку и имеет следующий формат:

  • символ #
  • инструкция препроцессора (одна из define, undef, include, if, ifdef, ifndef, else, elif, endif, line, error, warning, pragma)
  • Аргументы (в зависимости от инструкции)
  • перевод строки

Нулевая директива (один символ # за которым следует перевод строки) не допускается, и не имеет никакого эффекта.

[править] Возможности

Препроцессор имеет следующие возможности модификации текста кода:

Следующими аспектами препроцессора можно управлять