Como compilar um programa em C++!

Iniciado por Natureba, 07 de Abril de 2007, 14:23

tópico anterior - próximo tópico

Natureba

Ae pessoal... ridiculo o titulo do tópico neh???
HEuhAEU.... mas eu me explico..

Eh o seguinte, eu ja vi muitas pessoas colocando todos os includes no arquivo principal do programa(main.cpp) e criar headers, que se utilizam de algumas bibliotecas incluidas nesse arquivo principal... Então eu queria saber, como eles fazem para compilar algo assim, pois, por exemplo, se eu tentar compilar desta forma:
g++ -o NOME main.cpp header.h
vai gerar um erro falando que os elementos utilizados em header.h não são declarados neste escopo... Por exemplo, se eu incluir string.h no main.cpp e no header.h eu declarar uma variavel string("Soubobo"); vai dar algum erro com esse string, falando q ele n existe ou algo do tipo...

Eu queria saber como o pessoal compila algo assim, pois estou tendo problemas no meu projeto...

Valeu.
Abraços.

Darcamo

Vc tem que dar um include do string.h no header.h também.

Agora, se vc incluir o string.h no header.h e incluir o header.h no main.cpp, então não vai precisar incluir o string.h no main.cpp mesmo que declare alguma variável do tipo string. Isso porque ao incluir o header.h no main.cpp vc também está incluindo no main.cpp todos os includes que colocou no header.h.

Natureba

Então cara... mas eu vi muitos jogos que não incluem... por exemplo, ja vi muitos códigos-fontes de jogos em SDL que usam em algum header variaveis SDL_Surface sem incluir o SDL.h...
Eles incluem o SDL.h somente no main.cpp e o SDL.h já eh passado para os outros arquivos, nao sei como...( A nao ser que eles modifiquem os codigos fontes para sacanear mesmo, o que eu nao acredito que seja )

Darcamo

Eles com certeza incluem algum arquivo que tem a linha com o include do SDL.h.

As vezes cria-se um ".h" só para colocar os includes e depois inclui-se apenas esse ".h".
Se tá funcionando deixa. Se der falta da SDL não reconhecida aí inclui o SDL.h.
Em geral mesmo que se inclua um .h mais de uma vez não se terá o problema de inclusão múltipla porque sempre se usa os #define e #ifdef para evitar a possibilidade desse problema.

Diego_Rocha

Com certeza o SDL.h esta incluido, é que tem projetos que são grandes e contem muitos arquivos, então fica um pouco dificil entender por exemplo:

header1.h -----> header2.h ------> header3.h -----> main.cpp

no main ao se incluir somente o header3.h voce automaticamente ta incluindo o header2 e 1, por isso as vezes tu olha somente no header3 e nao ve o include, e acha q esta faltando, quando o include esta no header 2 ou no header 1, é isso ai espero q tenha entendido t++