Руководство по стилю Google C++ включает порядокC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Руководство по стилю Google C++ включает порядок

Сообщение Anonymous »

Руководство по стилю Google C++ рекомендует включать файлы заголовков (.h) в файлы реализации (.cpp, .cc) в следующем порядке:


В dir/foo.cc или dir/foo_test.cc, основной целью которых является реализация или тестирование элементов в dir2/foo2.h, порядок включения следующий:

Код: Выделить всё

dir2/foo2.h.
A blank line
C system files.
C++ system files.
A blank line
Other libraries' .h files.
Your project's .h files.

Как уже говорилось, такой порядок позволяет видеть пропущенные зависимости в dir2/foo2.h при компиляции модуля foo, а не других невинных модулей. Кажется вполне логичным.

Но почему файлы .h других библиотек. и файлы .h вашего проекта. помещены в конец списка? Теоретически также могут отсутствовать зависимости, которые будут скрыты путем включения системных файлов C. и системных файлов C++. ранее.

Может быть, предполагается, что проблемы других (заголовочных) файлов должны обнаруживаться в связанных файлах реализации? А как насчет библиотек только для заголовков в этом случае?

Другими словами, будет ли следующий порядок включений:

Код: Выделить всё

dir2/foo2.h.
A blank line
Other libraries' .h files.
Your project's .h files.
A blank line
C system files.
C++ system files.

будет ли лучше быстрее находить скрытые зависимости?

Например, если у меня есть только заголовок, для которого требуется (но не указан в этом файле). При использовании порядка Google вероятность прямого или косвенного включения выше, чем при включении системных файлов на последнем шаге (как я предлагал ранее). Следовательно, низкая вероятность обнаружить скрытую зависимость. Так что же мы выиграем, если включим системные файлы перед другими файлами библиотеки/вашего проекта?

Также неясно, следует ли мне использовать рекомендуемый порядок включения файлов в другие (определяемые пользователем) заголовочные файлы.

Подробнее здесь: https://stackoverflow.com/questions/543 ... lude-order
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»