Ir ao conteúdo
  • Cadastre-se
eric123

Dúvida com include C++

Recommended Posts

Olá pessoal, estou criando uma TAD e estou querendo incluir um código separado em meu main, só que não sei o que usar para incluir isso dentro de uma estrutura de repetição(por exemplo).

Pois fora do main sei que consigo utilizar "#include<...>", mas já dentro do main não sei, e preciso da ajuda de vocês.

Agradeço desde já (:

abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao entendi muito bem o que tu quis dizer, pelo que entendi tu quer por uma biblioteca feita por você mesmo? no caso aonde você poe os includes é os por

#include "suabiblioteca.h"

dai é só chamar determinada funçao que esteja com o prototipo declarado no seu arquivo.h

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está tentando criar uma função/procedimento? Se for é muito simples.

#include <...>

int Soma(int a, int
{
return a+b;
}

int main ()
{
cout << Soma(1, 3)<<endl;
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Também não entendi muito bem... então vou dar dois exemplos '-'.

Exemplo 1

inc.c

	for (i = 0; i < 10; i++)
printf (" %d", i);

main.c

#include <stdio.h>

int main ()
{
int i;
#include "inc.c"
return 0;
}

Ou...

Exemplo 2

inc.c

struct exemplo
{
int primeiro, segundo;
};

main.c

#include <stdio.h>
#include "inc.c"

int main ()
{
int i;
struct exemplo a[10];
for (i = 0; i < 10; i++)
a[i] = (struct exemplo){10+i, 15-i};
for (i = 0; i < 10; i++)
printf ("%d %d\n", a[i].primeiro, a[i].segundo);
return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, se eu utilizar por exemplo....

main(){

int escolha;

switch(escolha){

case 1:

#include<funcaoA.c>

break;

case 2:

#include<funcaoB.c>

break;

case 3:

#include<funcaoC.c>

}

}

Isso é possível? Pois quero incluir funções somente com critérios.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com certeza tem uma outra forma de fazer o q você ta querendo, de uma forma menos bizarra q essa.

Vou explicar, até dá pra você incluir um cabeçalho no meio do código, mas nao dá pra incluir um cabeçalho durante a execução do programa.

você pode usar um #if.


#if x == 0
#include "cabecalho.h"
#endif

Mas você só vai poder fazer isso se você declarar uma constante x com o valor 0, nao da pra fazer isso aqui, por exemplo:


scanf("%d",&x);
#if x == 0
#include "cabecalho.h"
#endif

Compartilhar este post


Link para o post
Compartilhar em outros sites

...

Inclui antes da main e chame as funções correspondentes...

#include "funcoes.h"

int main()
{
switch(escolha)
{
case 1:
funcaoA();
break;
case 2:
funcaoB();
break;
case 3:
funcaoC();
}
return 0;
}

...

-

...

Inclui antes da main e chame as funções correspondentes...

#include "funcoes.h"

int main()
{
switch(escolha)
{
case 1:
funcaoA();
break;
case 2:
funcaoB();
break;
case 3:
funcaoC();
}
return 0;
}

...

-

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Dead

Na verdade, isso não ajuda em nada no que ele quer (como você disse, tem que ser uma constante, e o programa dele não é assim). Além disso, dá sim para incluir algo durante a execução do programa. Quer dizer, na prática acaba sendo durante o link (quando for compilar)...

@eric

Siga o que Shara postou... é o jeito correto de fazer isso. Ou então simplesmente ponha as funções em cima do main, no mesmo arquivo...

Compartilhar este post


Link para o post
Compartilhar em outros sites
@Dead

Na verdade, isso não ajuda em nada no que ele quer (como você disse, tem que ser uma constante, e o programa dele não é assim). Além disso, dá sim para incluir algo durante a execução do programa. Quer dizer, na prática acaba sendo durante o link (quando for compilar)...

Eu sei que não ajudaria em nada, foi por isso q sugeri que ele usase uma outra forma menos bizarra dele fazer o q ele tava tentando fazer.

O que eu quis dizer é que não dá pra incluir um arquivo quando o programa já está compilado e rodando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Shara

entendi perfeitamente o que você passou, mas na verdade o que eu queria não seria funções .h e sim .c, não sei se faria diferença, mas também tentei com ambas e deu o mesmo erro.

O que eu estou querendo, é fazer uma atividade que o meu professor passou para nós,

que é criar um algoritmo com um menu para escolher trabalhar em ARVORE AVL, ARVORE B ou TABELA HASH. (não sei se conhece os sistemas, mas isso não importa)

O que estou tetando fazer é criar apenas um main para todos, e incluir as funções externas de cada um para o mesmo(main). Assim eu incluiria, no caso, o "main" de cada um (AVL, B e Hash) dentro dos cases do switch do meu main, que dependentemente do valor que entrar no meu switch ele ira entrar num case que terá um outro menu referente ao que o usuário escolheu no primeiro menu do programa.

Entendeu?? rsrs

É o que eu estou fazendo mas parece que esta contendo erros quando ele tenta incluir as funções no main. Da a impressão que os códigos das funções estão errados, mas na verdade não estão, pois consigo executa-los separados.

Estou usando o Dev-C++.

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deixa eu ver se eu entendi, você quer criar um arquivo.c para cada menu?

Mais ou menos assim? criar um arquivo C/C++ com a função main:

#include <stdio.h>
#include <stdlib.h>

int main()
{
printf("Arquivo principal\n");
_main();
return 0;
}

E outro com com uma função main secundaria:

#include <stdio.h>

int _main()
{
printf("\nArquivo secundario");
return 0;
}

Adicionar o arquivo secundario ao projeto clicando em File>New>File... (No code::blocks)

A função main secundaria roda perfeitamente na função main principal.

É mais ou menos isso?

Tem uma forma menos complicada de fazer isso tudo que é criar um header, escrever as sua funções nele e chamá-las quando precisar, mas pelo visto você não quer usar esse método, não sei porq.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

voce pode botar essas funções no seu mesmo .c, colocando .h é só pra organizar seu programa, pra deixar as funções separadas e bonitinhas em outro arquivo, pro seu .c não ficar muito grande.

Não sei ao certo qual outra propriedade da main, mas até agora só vi ela como mais uma função, a única propriedade especial dela é que o programa inicia por ela.

Você pode perfeitamente fazer o que Shara disse...dentro dessas funções você roda suas árvores, as frutas, os galhos, faz perguntas, coleta dados...enfim, é como se essas novas funções fossem sua main...seu programa pode somente perguntar pra onde ir, ir pra essa função e ficar o tempo inteiro trabalhando lá, só saindo quando o usuário digitasse algo ou chegasse ao fim mesmo, aí voltaria pra main e terminaria o programa.

Super normal usar a main só pro switch, e depois só voltar pra ela pra terminar o programa.

Ou cria teu programa principal, e os outros 3, cada um com sua main.

Dentro do principal, na switch usa

system("arvore_avl.exe");

que ele vai abrir o outro programa, mas isso não é muito seguro nao...

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Dead

Sou leigo em C/C++, o que eu quero fazer é quase isso que você citou, mas no caso nao quero incluir um outro "main(){}" no main principal, somente o menu e as chamadas das funções daquele determinado sistema escolhido.

exemplo::

main.cpp

#include <stdio.h>

#include <stdlib.h>

int main()

{

int escolha;

switch(escolha){

case 1: #include "MenuAVL.c"

}

}

MenuAVL.c

printf("\nFUNÇÕES DA ÁRVORE AVL");

return 0;

}

Seria isso, pois como tenho um main_principal, nao seria necessário levar um outro main para o meu main_principal, só jogar o menu e as chamadas das funções.

Compartilhar este post


Link para o post
Compartilhar em outros sites
@Dead

Sou leigo em C/C++, o que eu quero fazer é quase isso que você citou, mas no caso nao quero incluir um outro "main(){}" no main principal, somente o menu e as chamadas das funções daquele determinado sistema escolhido.

exemplo::

main.cpp

MenuAVL.c

Seria isso, pois como tenho um main_principal, nao seria necessário levar um outro main para o meu main_principal, só jogar o menu e as chamadas das funções.

Então cara, primeiramente você vai ter q apagar essa ideia da sua cabeça:

case 1: #include "MenuAVL.c"

Não tem como usar a função #include no meio do código, por mais q o arquivo seja no formato '.c' , '.h', '.cpp' etc... Isso é regra, os caras que criaram C determinaram isso, então desiste de usar #include no case.

O que você pode fazer é exatamente isso que eu falei, você vai ter q criar um arquivo "MenuAVL.c", nele incluir a função:


void MenuAVL()
{
printf("Menu AVL :D");
return;
}

Adicionar esse arquivo ao projeto para que ele possa ser compilado e linkado junto com todos o arquivo main.

E na função main principal, chamar a função "MenuAVL".


int main()
{
[...]

switch(lol)
{
case 1: MenuAVL();
}
return 0;
}

tendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante

Andei pesquisando aqui sobre linker, pré-processamento, diretivas etc...

O pré-processador substitui tudo que for #include pelo código dentro desse arquivo que você incluiu, é só uma substituição e entrega pro compilador.

Pela que voce ta dizendo, o pré- não saberia ao certo o que substituir, já que isso vai ser decidido somente na execução do programa...talvez, quiçá, quem sabe, por isso não dê pra fazer isso...no fim das contas, o pré- substitui todos esses #includes.

Eu acho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ave,

Provavelmente o amigo eric123 deve estar habituado com programação CLIPPER. A sintaxe do CA-Clipper permite fazer justamente isso que ele quer (e é até praxe): incluir código-fonte (.PRG's) nas entradas do comando CASE (ou em qualquer parte do código).

@eric123: Procure entender a sintaxe do C e siga as orientações já passadas acima.

;)

NW

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Dead

Consegui realizar o algoritmo.

Agradeço a todos pela ajuda, tudo foi de grande utilidade.

Dúvida solucionada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×