Galera é o seguinte... eu uso o Dev-C++ 4.9.9.2 e quando eu ia criar algum programa, só abria um novo arquivo e começava a escrever o código. Todo o programa ficava em um único arquivo, constantes, macros, declarações e definições de funções. Tá... isso não me atrapalhava, porque eu só fazia programas pequenos, mas recentemente estou fazendo um programa que terá algumas milhares de linhas e fazer tudo em um único arquivo é um trabalho ABSURDO!
Lendo coisas picadas na internet eu vi que a galera cria projetos (não sei como funciona direito)...
O que eu estou tentando fazer é dividir o programa por funções e colocar uma biblioteca com definições de macros, protótipo de funções etc.
Ai que está o problema! Não estou conseguindo fazer isso.
Eu tinha lido algumas coisas sobre colocar #ifndef na bilbioteca, mas eu não entendi. Se alguém puder me explicar como eu faço pra criar a biblioteca eu agradeceria.
Obs1.: O erro que aparece quando eu tendo compilar o main() é: 5 In file included from C:\Documents and Settings\Administrator\Desktop\Trabalho 2\Trabalho\TESTE com biblioteca\main(teste).c
Obs2.: por favor, expliquem com detalhes.
Vou colocar o que estou fazendo:
Função main()
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include "biblioteca.h"
#define SENHA 00000000
/*Os protótipos de muitas funções estão na biblioteca xxx*/
/*variáveis para uso da função password*/
char adm[80];
char passw[9];
main()
{
/*variáveis para uso no menu principal*/
int opM,verdade=1;
/*variáveis uso geral, main()*/
/*explicação de algumas variáveis
fpB=ponteiro para arquivo, B de brinquedo
*/
int i,j,a,b,c;
char ch1,ch2;
FILE *fpB;
/*Arquivos, B de brinquedo, C de clinte*/
if((fpB=fopen("cadastroB.dat", "ab+"))==NULL){printf("\nProblema ao abrir o arquivo\n");sleep(2000);exit(1);}
while(verdade)
{
printf("\nAdministrador(1)");
printf("\nVendedor(2)");
printf("\nCliente(3)");
scanf("%d",&opM);
switch (opM)
{
case 1:
printf("\nNome do usuário: ");
fflush(stdin);
gets(adm);
printf("\nSenha: ");
for (i=0; i<8; i++)
{
*(passw+i)=ch1=getch();
if(*(passw+i)=='\r')
{
printf("\nA senha precisa ser maior\n");
printf("Senha: ");
i=-1;
continue;
}
printf("*");
}
*(passw+(i+1))='';
password();
administrador();
default:
printf("\nOp\x87\xE3o inv\x0lida, repita a opera\x87\xE3o\n");
sleep(2000);
system("cls");
}
}
system ("PAUSE");
return 0;
}
/*Definição das funções*/
/*definição adiministrador()*/
void administrador(void)
{
/*explicação de algumas variáveis
fpB=ponteiro para arquivo, B de brinquedo
*/
int opM,i,verdade[4];
tipo_brinquedo=brinquedo;
FILE *fpB;
for(i=0;i<4;i++)verdade[i]=1;
/*explicação de algums arquivos
brinquedo_CD=cadastro de brinquedos, o C não é de cliente
*/
if((fpB=fopen("brinquedo_CD.dat","ab+"))==NULL)ERROA(brinquedoC.dat);
do
{
printf("\t\tADMINISTRA\X87\AO");
printf("\n\n\t\tMENU\n\n");
printf("\nCadastrar brinquedos(1)");
printf("\nAlterar preço dos brinquedos(2)");
printf("\nRegistro de uso dos brinquedos(3)");
printf("\nRetornar ao menu principal(4)");
scanf("%d",&opM);
switch(opM)
{
case 1: do{brinquedo=cadastraB();
if(fwrite(&brinquedo, sizeof(tipo_brinquedo), 1, fpB) != 1)ERROE;
printf("Deseja cadastrar outro brinquedo? 1=sim ou 0=não: ");
scanf("%d",verdade[1]);
}while(verdade[1]);system("CLS");break;
case 4: exit(1);
default: printf("Op\x87\ inv\x0lida"); sleep(2000); system("CLS");
}
}while(verdade[0]);
fclose(fpB);
}
/*definição password()*/
void password(void)
{
char compara[9]={'0','0','0','0','0','0','0','0',''};
int comp;
comp=strcmp(passw,compara);
if(comp == 0)
printf("\nTudo certo");
}
Função administrador()
#include "biblioteca.h"
#include "cadastraB.c"
/*definição adiministrador()*/
void administrador(void)
{
/*explicação de algumas variáveis
fpB=ponteiro para arquivo, B de brinquedo
*/
int opM,i,verdade[4];
tipo_brinquedo=brinquedo;
FILE *fpB;
for(i=0;i<4;i++)verdade[i]=1;
/*explicação de algums arquivos
brinquedo_CD=cadastro de brinquedos, o C não é de cliente
*/
if((fpB=fopen("brinquedo_CD.dat","ab+"))==NULL)ERROA(brinquedoC.dat);
do
{
printf("\t\tADMINISTRA\X87\AO");
printf("\n\n\t\tMENU\n\n");
printf("\nCadastrar brinquedos(1)");
printf("\nAlterar preço dos brinquedos(2)");
printf("\nRegistro de uso dos brinquedos(3)");
printf("\nRetornar ao menu principal(4)");
scanf("%d",&opM);
switch(opM)
{
case 1: do{brinquedo=cadastraB();
if(fwrite(&brinquedo, sizeof(tipo_brinquedo), 1, fpB) != 1)ERROE;
printf("Deseja cadastrar outro brinquedo? 1=sim ou 0=não: ");
scanf("%d",verdade[1]);
}while(verdade[1]);system("CLS");break;
case 2: alteraPB();system("CLS");break;
case 3: verUB();system("CLS");break;
case 4: exit(1);
default: printf("Op\x87\ inv\x0lida"); sleep(2000); system("CLS");
}
}while(verdade[0]);
fclose(fpB);
}
Função cadastraB()
#include <stdio.h>
#include <stdlib.h>
/*definição cadastraB*/
tipo_brinquedo cadastraB(void)
{
/*explicação sobre letras usadas nas variáveis:
P=ponteiro
F=arquivo(file), tabém pode ser float
B=brinquedo
S=string
I=inteiro
*/
int i,verdade[4];
tipo_brinquedo brinquedo;
for(i=0;i<4;i++)verdade[i]=1;
system("CLS");
do{
printf("\t\tCADASTRO DE BRINQUEDOS\n\n");
printf("Nome do brinquedo: ");
fflush(stdin);
gets(brinquedo.nome);
verdade[0]=0;
}while(verdade[0]);
do{
printf("N\xa3mero do brinquedo: ");
fflush(stdin);
gets(brinquedo.numeroS);
RESTRICAO09(i,brinquedo.numeroS,brinquedo.numeroS);
brinquedo.numeroI=atoi(brinquedo.numeroS);
verdade[1]=0;
}while(verdade[1]);
do{
printff("Pre\x87 do brinquedo: ");
fflush(stdin);
gets(brinquedo.precoS);
RESTRICAO09(i,brinquedo.precoS,brinquedo.precoS);
brinquedo.precoF=atof(brinquedo.precoS);
verdade[2]=0;
}while(verdade[2]);
do{
printf("Acesso ao brinquedo (Vip, 1=sim ou 0=não): ");
fflush(stdin);
gets(brinquedo.vipS);
RESTRICAO09(i,brinquedo.vipS,brinquedo.vipS);
brinquedo.vipI=atoi(brinquedo.vipS);
verdade[3]=0;
}while(verdade[3]);
return brinquedo;
}
blioteca.h
#include <stdio.h>
#include <stdlib.h>
#include "administrador.c"
#include "cadastaB."
/*
#include "administrador.c"
#include "cadastraB.c"
#include "TrabBETA0.02(teste).c"
*/
/*Declarações de tipos*/
typedef struct tipo_brinquedo
{
char nome[80], numeroS[80], idadeS[3], vipS[2],precoS[3];
short int numeroI, idadeI, vipI;
float precoF;
};
/*Fim das declarações de tipos*/
/*====================================================================================================================================*/
/*definições*/
/*macros e afins*/
/*Algumas explicações
restrição09=restringe os valores a dígitos de 0 a 9
*/
#define RESTRICAO09(i,x,y) for(i=0;i<80;i++){if(x < 48 || y > 57){printf("S\x2 \x82 permitido n\x3meros");sleep(2000);system("CLS");continue;}}
/*Definição de erros*/
/*Algumas explicações
ERROA=erro de arquivo
ERROE=erro de escrita
*/
#define ERROA(n) printf("\nErro de abertura", n);sleep(2000);exit(1);
#define ERROE(n) printf("\nErro de escrita", n);sleep(2000);break;
/*Fim das definições de macros*/
/*====================================================================================================================================*/
/*Declarações das funções*/
/*Os espaços separam as classes, administrador, vendedor, cliente*/
/*O primeiro nome após o espaço é sempre da classe e os nomes que se seguem são funções usadas dentro da classe*/
/*Significado de alguma letras usadas no nome de funções:
B=brinquedo
C=cliente
P=preço
U=uso
*/
extern void administrador(void);
extern void password(void);
extern tipo_brinquedo cadastraB(void);
extern void alteraPB(void);
extern void verUB(void);
extern void vendedor(void);
extern void cadastroC(void);
extern void recarregarC(void);
extern void cliente(void);
/*Fim das declarações de funões*/
/*====================================================================================================================================*/
Pergunta
dark_max
Galera é o seguinte... eu uso o Dev-C++ 4.9.9.2 e quando eu ia criar algum programa, só abria um novo arquivo e começava a escrever o código. Todo o programa ficava em um único arquivo, constantes, macros, declarações e definições de funções. Tá... isso não me atrapalhava, porque eu só fazia programas pequenos, mas recentemente estou fazendo um programa que terá algumas milhares de linhas e fazer tudo em um único arquivo é um trabalho ABSURDO!
Lendo coisas picadas na internet eu vi que a galera cria projetos (não sei como funciona direito)...
O que eu estou tentando fazer é dividir o programa por funções e colocar uma biblioteca com definições de macros, protótipo de funções etc.
Ai que está o problema! Não estou conseguindo fazer isso.
Eu tinha lido algumas coisas sobre colocar #ifndef na bilbioteca, mas eu não entendi. Se alguém puder me explicar como eu faço pra criar a biblioteca eu agradeceria.
Obs1.: O erro que aparece quando eu tendo compilar o main() é: 5 In file included from C:\Documents and Settings\Administrator\Desktop\Trabalho 2\Trabalho\TESTE com biblioteca\main(teste).c
Obs2.: por favor, expliquem com detalhes.
Vou colocar o que estou fazendo:
Função main()
Função administrador() Função cadastraB() blioteca.hLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.