Supporter - Nibble anderson_leite Posted December 16, 2017 at 05:24 AM Supporter - Nibble Share Posted December 16, 2017 at 05:24 AM Quando estamos desenvolvendo algum tipo de software, seja ele em C ou em C++, é comum dividi-lo em multiplos arquivos, sejam eles Classes ou uma header que perfome algum tipo de operação especifica, minha maior duvida é, como eu devo tratar as headers "compartilhadas" para não precisar declarar mais de uma vez no meu projeto? Exemplo: file.h #idndef _FILE_ #define _FILE #include <string.h> #include <sys/types.h> #include <dirent.h> class File { char* Filename; DIR* Path; }; #endif folder.h #idndef _FOLDER_ #define _FOLDER_ #include <string.h> #include <sys/types.h> #include <dirent.h> class Folder { char* folderName; DIR* folderPath; }; #endif No exemplo hipotetico acima, temos uma header 'file' e uma header 'folder', ambas precisam da mesma header, string.h, sys/types.h, dirent.h. Sabendo que elas precisam da mesma header, seria uma boa pratica, declarar todas as dependencias numa main.cpp e estruturar de maneira que carregue todas as headers antes de carregar as minhas propias headers? Acabou sendo 2 perguntas haha vlw. Link to comment Share on other sites More sharing options...
Pimptech Posted December 16, 2017 at 08:28 PM Share Posted December 16, 2017 at 08:28 PM Não sou expert em C ou C++, mas acredito que em qualquer arquivo que você utilizar algo externo você precisa incluir no seu arquivo. O que pode ser um atalho pra isso é criar uma header que inclua libs de comun uso e chamar apenas essa header que inclui as outras no seu arquivo. Aguarde alguém mais experiente responder, mas até onde eu sei essa é a melhor forma. Abraço! Link to comment Share on other sites More sharing options...
Administrators Fernando Mercês Posted December 18, 2017 at 04:09 AM Administrators Share Posted December 18, 2017 at 04:09 AM No pev eu uso um common.h com todos os includes em comum. Link to comment Share on other sites More sharing options...
gobannon Posted December 18, 2017 at 07:02 PM Share Posted December 18, 2017 at 07:02 PM Uma boa prática, parecida com o que o pessoal mencionou mas de forma um pouco mais "marota", é fazer o uso de "headers pré-compilados" para acelerar o processo de compilação, o que é importante quando você está trabalhando em um projeto grande com C/C++. Um header pré-compilado consiste em um header aonde você pode ter os seus #includes que não devem ser recompilados com frequência e são bastante usados (como coisas da stdlib). Isso alivia uma boa parte do trabalho do seu compilador, pois se você inclui o mesmo header em vários arquivos fonte, toda vez que esse fonte é alterado o compilador precisa compilar o seu conteúdo E o conteúdo do header incluído. Esse artigo mostra exemplos de como usar um header pré-compilado para gcc, clang e MSVC: http://itscompiling.eu/2017/01/12/precompiled-headers-cpp-compilation/ Abraços. Link to comment Share on other sites More sharing options...
cpybit Posted December 23, 2017 at 07:45 PM Share Posted December 23, 2017 at 07:45 PM @Cander é isso mesmo que o gobannon disse. Você pode usar pch (Pre compiled header) https://msdn.microsoft.com/en-us/library/szfdksca.aspx . Se você já criou um projeto no Visual studio com template padrão, concerteza já viu o "stdafx.h" no projeto. Isso é um PCH. #idndef _FILE_ #define _FILE #endif Se você não for fazer nenhuma lib, você pode fazer o seguinte para o código ficar mais claro com relação a isso. // includes.hpp #pragma once #include <string.h> #include <sys/types.h> #include <dirent.h> // file.h #idndef _FILE_ #define _FILE class File { char* Filename; DIR* Path; }; #endif // folder.h #idndef _FOLDER_ #define _FOLDER_ class Folder { char* folderName; DIR* folderPath; }; #endif // file.cpp #include "includes.hpp" #include "file.h" //folder.cpp #include "includes.hpp" #include "folder.h" Eu gosto dessa abordagem, seu header fica limpo de includes e todos os headers que você tem como dependência ficam em 1 só lugar. Configura o includes.hpp como pch e você tem seus problemas resolvidos. Link to comment Share on other sites More sharing options...
Supporter - Nibble anderson_leite Posted December 23, 2017 at 11:11 PM Author Supporter - Nibble Share Posted December 23, 2017 at 11:11 PM Exatamente oque eu estava buscando! otimizou bastante o processo, irei começar a usar em meus projetos! vlw a todos Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.