Включення файлів
Синтаксис:
#include "ім'я шляху"
#include <ім'я шляху>
Директива #include включає вміст початкового файлу <ім'я шляху> якого задано, в поточний компільований початковий файл.Наприклад, загальні для декількох початкових файлів визначення іменованих констант і макровизначення можуть бути зібрані в одному файлі, що включається, і включені директивою #include у всі початкові файли. Файли, що включаються, використовуються також для зберігання оголошень зовнішніх змінних і абстрактних типів даних, що розділяються декількома початковими файлами.
Препроцесор обробляє файл, що включається, таким же чином, начебто цей файл цілком входив до складу ісходного файлу в крапці, де записана директива #include. Текст, що включається, також може містити директиви препроцессора. Препроцесор виконує обробку включаємого файлу, а потім повертається до обробки первинного ісходного файлу.
Ім'я шляху є ім'ям файлу, якому може передувати ім'я пристрою і специфікація директорії. Синтаксис імені шляху визначається угодами операційної системи.
Препроцесор використовує поняття стандартних директорій для пошуку файлів, що включаються. Стандартні директорії задаються командою PATH операційної системи. Препроцесор веде пошук до тих пір, поки не знайде файл із заданим ім'ям. Якщо ім'я шляху задано однозначно (повністю) і заключено в подвійні лапки, то препроцесор шукає файл тільки в директорії, специфікованій заданим ім'ям шляху, а стандартні директорії ігнорує. Якщо задана в лапках специфікація не утворює повне ім'я шляху, то препроцесор починає пошук файлу, що включається, в поточній робочій директорії (тобто в тій директорії, яка містить початковий файл, в якому записана директива #include.
Директива #include може бути вкладеною. Це значить, що вона може зустрітися у файлі, включеному іншою директивою #include. Коли препроцесор знаходить вкладену директиву #include, він починає пошук файлу в поточній директорії, відповідній початковому файлу, який містить цю вкладену директиву #include. Після цього препроцессор переходить до пошуку в поточній директорії, яка відповідає охоплюючому початковому файлу, тобто тому, по відношенню до якого дана директива #include є вкладеною. Допустимий рівень вкладеності директив #include залежить від реалізації компілятора. Процес пошуку в охоплюючих директоріях продовжується до тих пір, поки не буде проглянута поточна директорія найпершого початкового файлу, тобто файлу, ім'я якого було задано при виклику компілятора мови Сі.
Потім препроцесор продовжує пошук в директоріях, вказаних в командному рядку компіляції, і, нарешті, шукає в стандартних директоріях.
Якщо ж ім'я шляху вкладено в кутові дужки, то препроцесор взагалі не здійснюватиме пошук в поточній робочій директорії, а відразу почне пошук в директоріях, специфікованих в командному рядку компіляції, а потім в стандартних директоріях.
Об'єднання символьних рядків і склеювання лексем в іменованній константі, яка використовується в директиві #include, використовувати не можна. Результат розширення константи повинен відразу читатися як коректна директива #include.