![]() |
Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Algoritmi e strutture dati (http://www.dsy.it/forum/forumdisplay.php?forumid=207)
-- Problema con dev c++ (http://www.dsy.it/forum/showthread.php?threadid=37541)
Problema con dev c++
ciao a tutti...utilizzando dev-c++ non riesco a compilare correttamente i seguenti sorgenti,mi dice che ho più di un main definito ma non capisco perchè ne ho solo uno!
Riporto l'errore che dev c++ mi da quando provo a compilare test.c con le seguenti opzioni : test.c stack.c
multiple definition of main
first defined here
..
..
suggerimenti?grazie mille..
Header file (stack.h)
PHP:
#ifndef STACK_H
#define STACK_H
void push( int n);
int pop();
int top(void);
int is_empty(void);
void make_empty(void);
void stampa(void);
#endif
PHP:
#include<stdio.h>
#include<stdlib.h>
#include "stack.h"
struct nodo{
int dato;
int h;
struct nodo *next;
};
int cont,h;
typedef struct nodo nodo;
nodo *testa = NULL;
nodo *tmp = NULL;
void push( int n){
struct nodo *nuovo;
nuovo = malloc(sizeof(struct nodo));
if(nuovo == NULL) exit(0);
nuovo -> dato = n;
nuovo -> next = testa;
testa = nuovo;
}
int pop(void){
tmp = testa;
h = tmp->dato;
testa = testa->next;
return h;
}
int top(void){
return testa->dato;
}
int is_empty(void){
if(testa == NULL) return 1;
else return 0;
}
void make_empty(void){
while(is_empty()== 1)
pop();
}
void stampa(void){
tmp=testa;
while(tmp !=NULL){
printf("| %d |\n",tmp->dato);
printf("|---|\n");
tmp=tmp->next;
}
}
PHP:
#include<stdio.h>
#include<stdlib.h>
#include "stack.h"
int main (){
char c;
int n,tmp;
while( ( c = getchar ()) != 'f' ){
switch(c){
case '1':
scanf("%d",&n);
push(n);
printf("inserito: %d",n);
break;
case '2':
tmp = pop();
printf("tolto: %d",tmp);
break;
case '3':
tmp = top();
printf("in testa: %d",tmp);
break;
case '4':
tmp = is_empty();
if(tmp==0)
printf("pila vuota");
else printf("pila non vuota");
break;
case '5':
make_empty();
printf("pila svuotata");
break;
case '6': stampa();
break;
} // end switch
}
return 0;
}
l'errore mi pare chiaro:
hai definito più volte, anzichè una il main(), ovvero il punto di partenza
per l'esecuzione del tuo programma..
eccetto che in test.c non vedo altri main()....
non vorrei dire una scemenza, ma nel file test.c, prova a fare un include di
stack.c, anzichè stack.h
sembra il classico problema da Makefile
capita, per distrazione, di includere due volte lo stesso file nella fase di linking. in questo modo c'è una definizione multipla delle stesse funzioni, nel tuo caso proprio il main.
il fatto è che dev-cpp non dovrebbe fare queste errori.
ti consiglio di compilare a mano quando puoi, almeno ti rendi conto di come funziona il Makefile... può sempre venire utile in futuro
apri il prompt di dos, aggiungi la directory bin di dev-cpp nel path poi edita il Makefile del tuo progetto e assicurati che non ci sia due volte il file test.o nel linking.
a quel punto lancia tu il make dal prompt di dos e vedi se funziona. se va, vuol dire che dev-cpp ha fatto macello, se invece il makefile era a posto non so che dirti
__________________
Sono sempre alla ricerca di curriculum interessanti da segnalare alle società con cui ho contatti. Info in pm
| All times are GMT. The time now is 08:41. | Show all 5 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.