Недостатки файла <std.h>, который вводит все заголовки std? - PullRequest
2 голосов
/ 19 января 2009

Я нахожу длинные последовательности стандартных включений раздражает:

#include <vector>
#include <string>
#include <sstream>
#include <iostream>

Учитывая, что эти заголовочные файлы меняются очень редко, есть ли причина, по которой мне не следует создавать файл "std.h" #, включающий все заголовки std, и просто использовать его везде?

Ответы [ 6 ]

18 голосов
/ 19 января 2009

Включение ненужных заголовочных файлов увеличит время компиляции.

6 голосов
/ 19 января 2009

Возможно, вы захотите добавить их в стандартный предварительно скомпилированный заголовочный файл вашего проекта: если у вашего проекта есть стандартный предварительно скомпилированный заголовочный файл, и если ваши файлы не предназначены для повторного использования в других проектах, которые могут иметь другой стандартный заголовок файл.

4 голосов
/ 19 января 2009

Я не хочу создавать новый ответ для этого, но я в основном хочу соединить ответ Брайана Энсинка и ChrisW:

Во-первых, как отметил Брайан, время компиляции будет стремительно расти, так как оно включает в себя тонны файлов при каждой компиляции. К счастью, похоже, что это стандартные включения, поэтому они не должны меняться слишком часто, но они все равно будут отстойными.

Вы можете уменьшить это, собрав предварительно скомпилированный заголовок, который будет перекомпилирован только при полной перестройке, добавлении в файл PCH или изменении чего-либо включенного в него - но именно поэтому файлы PCH, как правило, включают только системные компоненты или вещи, которые не меняются так часто.

1 голос
/ 19 января 2009

Если вы на самом деле не используете его, оно не должно быть включено.

0 голосов
/ 19 января 2009

Это снижает читабельность вашего кода (как ни странно :)). Включив их все в один заголовочный файл, вы больше не можете сказать, просто посмотрев вверху файла, какие единицы перевода включают iostreams (и, следовательно, выполняют IO), fstream (и делают доступ к файлу) и т. Д.

Я бы предложил использовать IDE, которая позволяет сворачивать операторы включения, такие как eclipse, и автоматически сгибать включения. Это удаляет их из вашего поля зрения, в то же время делая ясными зависимости.

0 голосов
/ 19 января 2009

Это также увеличит размер ваших объектных файлов, что, вероятно, не имеет большого значения в наши дни.

Отредактировано согласно комментариям, что двоичный файл на самом деле не будет больше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...