Por que " incluem <iostream>` acabar, incluindo assim *muitos* arquivos?
Pergunta
O acompanhamento do presente pergunta:
Quando eu include <iostream>
.
Acontece que inclui muitos arquivos a partir de /usr/include
.Um grep "\usr\include"
mais g++ -E prog.cpp
contados a cerca de 1260 entradas ;).
É a sua forma de controle, incluindo vários arquivos?
Plataforma:Linux
G++ versão:4.2.4
Solução
Não, <iostream>
inclui-los porque depende-los diretamente, ou é dependências dependem deles.
Não é nada que você possa fazer sobre isso.
Você pode (dependendo do seu compilador) limitar o efeito que isso tem sobre tempo de compilação usando Precompiled cabeçalhos
Outras dicas
A minha sugestão é não se preocupar com quantos arquivos o compilador está incluindo.Concentrar-se mais no exatidão, robustez, e programação.Se o tempo de construção é uma preocupação, obter um computador mais rápido, construir durante a noite, um passeio a pé, ou dividir o código em menor conversão de unidades.Unidades de tradução devem ser pequenas o suficiente para conter o código que não são alterados com freqüência. Mudanças são do MAL.
A fundação do sistema de compilação é para compilar apenas os poucos arquivos que foram alterados.Se o seu processo de desenvolvimento está a funcionar correctamente, o tempo de compilação vai ficar mais e mais na fase de vinculação como o projeto cresce.
Se o tempo de compilação é ainda longa, veja se o seu compilador suporta cabeçalhos pré-compilados.Geralmente, este é o método para o compilador para armazenar todas as definições e declarações em uma forma mais eficiente.
Você #include <iostream>
quando você precisa usar correntes. Que deve definir algumas coisas que você precisa. Quanta atividade que precisa de fazer isso é uma questão de qualidade de implementação. Você pode remover arquivos de /usr/include
, mas que iria quebrar as coisas.
Eu realmente duvido que ele está incluindo 1260 arquivos. Quase certamente a maioria dos que são entradas duplicadas que não carregam qualquer coisa, mas não são podadas a partir da saída -E
.