.dsy:it.
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)


Posted by hyperion on 28-01-2009 14:48:

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





Sorgente per l'header (stack.c)

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;
        }
}




Client di test (test.c)
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;
}


Posted by DarkSchneider on 28-01-2009 19:07:

l'errore mi pare chiaro:

hai definito più volte, anzichè una il main(), ovvero il punto di partenza
per l'esecuzione del tuo programma..


Posted by hyperion on 28-01-2009 19:36:

eccetto che in test.c non vedo altri main()....


Posted by DarkSchneider on 28-01-2009 20:21:

non vorrei dire una scemenza, ma nel file test.c, prova a fare un include di
stack.c, anzichè stack.h


Posted by recoil on 30-01-2009 10:59:

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.