Препроцессор – это программа, предназначенная для предварительной обработки текста программы перед ее компиляцией.
# – директива препроцессора.
1. #include – директива подключения внешних файлов. Она имеет две формы:
- #include<имя файла> – подключение файла из стандартной библиотеки C++.
- #include”имя файла” – подключение собственного файла.
Пример.
1 |
#include<iostream> |
iostream – это библиотека ввода-вывода.
1 |
#include<cmath> |
cmath – математическая библиотека.
#include”myfile” – директива постановки.
1 |
#include”D:\\TEMP\\myfile” |
2. #define – определение символических имен.
1 |
#define имя значение |
Препроцессор вставляет вместо символических имен, их значение указанные в определении.
Пример.
3. #undef – предназначен для отмены определений созданных с помощью директивы #define.
Пример.
1 2 3 4 |
#define VERSION 1 int a = VERSION;// int a = 1; #undef VERSION int b = VERSION;//ошибка |
4. Директива условной компиляции: #ifdef, #ifndef, #if, #else, #elif, #endif.
Эти директивы предназначены для включения или исключения из компиляции некоторого фрагмента программы.
1 2 3 |
#ifdef символическое_имя фрагмент программы #endif |
Директива #ifdef включает в компиляцию фрагмент программы, если символическое имя определено ранее с помощью директивы #define сим_имя. Если это символическое имя не определено, фрагмент программы не компилируется.
Пример.
1 2 3 4 |
#define BETA #ifdef BETA cout<<”Бета версия”; #endif |
Директива #ifndef символическое_имя включает в компиляцию фрагмент программы, если символическое имя не определено с помощью директивы #define либо отменено с помощью директивы #undef.
Директива #if
1 2 3 |
#if выражение … #endif |
Директива #if включает в компиляцию фрагмент программы, если записанное выражение является истинным, в противном случае фрагмент программы не компилируется.
Пример.
1 2 3 4 5 6 7 |
#define VERSION 1 #if VERSION == 1 фрагмент 1 #endif #if VERSION == 2 фрагмент 2 #endif |
#else используется с одной из #ifdef, #ifndef, #if для подключения в компиляцию одного из двух альтернативных фрагментов программы.
Пример.
1 2 3 4 5 |
#ifdef BETA фрагмент 1 #else фрагмент 2 #endif |
#elif используется для включения в компиляцию одного из нескольких фрагментов программы, причем для каждого фрагмента используется свое условие.
1 2 3 4 5 6 7 |
#if условие 1 фрагмент 1 #elif условие 2 фрагмент 2 #elif условие 3 фрагмент 3 #endif |
1 2 3 4 5 6 7 8 |
#define VERSION 1 #if VERSION == 1 программа 1 #elif VERSION == 2 программа 2 #elif VERSION == 3 программа 3 #endif |
5. Директива #pragma используется для установки специальных опций компиляции.
Error: текст ошибки
Warning:
Библиотека cmath
В ней определены математические функции и константы.
1 |
#define USE_MATH_DEFINES |
1 |
#include<cmath> |