Правила программирования на С и С++. Главы 1-6 - Используйте вложенные директивы #include

ОГЛАВЛЕНИЕ

 

80. Используйте вложенные директивы #include.

Хотя большинство из правил в этой главе говорят вам, как избежать использования препроцессора, механизм включения файлов директивой #include является обязательной функцией препроцессора как в С, так и в С++. Тем не менее, даже здесь существуют проблемы.

Это на самом деле плохая идея - требовать, чтобы кто-нибудь включал файл, способный включать в себя следующий. Я всегда располагаю директивы #include без определенного порядка или забываю вставить одну из них. Следовательно, заголовочный файл должен всегда включать те файлы, которые определяют то, что используется в текущем заголовочном файле. Вследствие того, что могут возникнуть проблемы, если компилятор прочитает какой-нибудь .h файл более одного раза, вы должны предпринять шаги для предотвращения многократной обработки одного и того же файла. Помещайте строки типа:

#ifndef FILENAME_H_

#define FILENAME_H_

в начале каждого заголовочного файла, и вставляйте соответственно: #endif // FILENAME_H_в конце. Так как константа FILENAME_H_ будет уже определена к моменту второй попытки препроцессора обработать этот файл, то его содержание при втором проходе будет проигнорировано.