Директива #include дает указание компилятору читать еще один исходный файл в дополнение к тому, в котором находится сама директива [3]. Имя исходного (подключаемого файла) файла должно быть заключено в двойные кавычки или угловые скобки. Обычно имена стандартных заголовочных файлов заключают в угловые скобки, а кавычки приберегают для имен специальных файлов, относящихся к конкретной программе. Способ поиска файла зависит от того, в кавычках или угловых скобках находится его имя. Если имя заключено в угловые скобки, то поиск файла проводится тем способом, который определен в компиляторе. Часто это означает поиск определенного каталога, специально предназначенного для хранения таких файлов. Если имя заключено в кавычки, то поиск файла проводится другим способом. Во многих компиляторах это означает поиск файла в текущем рабочем каталоге. Если же файл не найден, то поиск повторяется уже так, как будто имя файла заключено в угловые скобки [3].
Файлы, имена которых находятся в директивах #include, могут в свою очередь содержать другие директивы #include. Они называются вложенными. Количество допустимых уровней вложенности у разных компиляторов может быть разным. Однако в стандарте С89 предусмотрено, что компиляторы должны допускать не менее 8 таких уровней [3].