Исходный файл обычно включает директивы препроцессора – это указания для предварительной обработки текста исходного файла перед его компиляцией. Директивой является строка, начинающаяся с символа #.
Директивы включения файлов позволяют подключить общие файлы заголовков с расширением “.h”, через которые осуществляется доступ к стандартным библиотекам, например,
#include <stdio.h> /* функции стандартного ввода-вывода */
#include <conio.h> /* функции консольного ввода-вывода */
#include <math.h> /* стандартные математические функции */
Директивы подстановки имен позволяют программисту создавать собственные символические константы и макроопределения для фрагментов исходного текста программы по формату
#define идентификатор текст
при этом в конце директивы не ставится точка с запятой (;), поскольку это не оператор, а текст подстановки, например,
#define PI 3.14159 /* символическая константа */
#define AREA (PI*r*r) /* макроопределение формулы */
#define AREA1(r) (PI*(r)*(r)) /* макроопределение функции */
Круглые скобки в макроопределении позволяют избежать побочных эффектов, связанных с порядком вычисления выражений с применением макрокоманд. Например, применение макроопределений без скобок при подстановке в выражение 2/AREA примет вид 2/PI*r*r, что неверно, а подстановка 2/(PI*r*r) верна. Аналогично, выражение 2/AREA1(r+5) с макроопределением без скобок имеет ошибочный вид 2/PI*r+5*r+5, а верной является подстановка 2/(PI*(r+5)*(r+5)).