PDA

View Full Version : [C] Aiutino su errore e warning


salvodel
14-07-2008, 18:56
Salve a tutti quando compilo il mio programmino ho il seguente errore e non riesco a capire il motivo...forse sono un po stanco:coffee: e newbo :bimbo: per questo chiedo venia e sopratutto il vostro aiuto: fun_data.c:30: error: conflicting types for ‘normalizza’
fun_data.h:8: error: previous declaration of ‘normalizza’ was here
fun_data.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>

#include "fun_data.h"
#include "fun2.h"

int normalizza(double **maxmin, struct mydata *data)
{
int i, t;
int canali,punti;
double emax, emin;
...
...
...
return 1;
}
fun_data.h
#define directory "D:/dati"
#define fnINPUT "INPUT"
#define fnOUTPUT "OUTPUT"
#define filenameW1 "T1"
#define filenameW2 "T2"
int normalizza(double **maxmin, struct mydata *data);
Se tolgo #include "fun_data.h" dal sorgente fun_data.c giustamente mi dice che non trova gli altri define. Però perche non ho gli stessi errori anche per fun2.c che ha #include "fun2.c" e di conseguenza mi dovrebbe dire previous declaration of ‘funzione’?:confused:

Inoltre ho i segunti warnings
fun_data.h:4: warning: ‘struct mydata’ declared inside parameter list
fun_data.h:4: warning: its scope is only this definition or declaration, which is probably not what you want
fun_data.h:8: warning: ‘struct mydata’ declared inside parameter list
fun_data.h:12: warning: ‘struct mydata’ declared inside parameter list
fun_data.h:16: warning: ‘struct mydata’ declared inside parameter list
fun_data.h:20: warning: ‘struct mydata’ declared inside parameter list
fun_data.h:24: warning: ‘struct mydata’ declared inside parameter list

La struttura è dichiarata in fun2.h ed è inclusa nel sorgente fun_data.c. A cosa sono dovuti tutti questi warning?:mbe:
Grazie a tutti.:help:

Big Bamboo
14-07-2008, 20:04
potresti fare uno schema di chi include chi e postare il codice degli altri file?

71104
14-07-2008, 20:51
dichiara struct mydata prima della funzione normalizza.

salvodel
15-07-2008, 12:21
potresti fare uno schema di chi include chi e postare il codice degli altri file?

Non volevo incasinare postando cose ridondanti. Dimmi se questo schema è sufficiente.
main.c

#include "fun_data.h"
#include "fun2.h"

In fun_data.c ci sono le funzioni mentre in fun_data.h ci sono le intestazioni ed in piu all'inizio ci sono dei define per le directory ed i file. Per adesso ho risolto spostando i define dal header al sorgente e togliendo #include "fun_data.h" da sorgente fun_data.c.
Quello che non capisco è perche invece nella sorgente fun2.c posso mettere #include "fun2.h" dove è definita una struttura e non mi da errore? :muro: E' dovuto ai define? :confused:
Grazie:help:

Big Bamboo
15-07-2008, 12:31
Protrebbe essere che includi all'interno del progetto 2 volte lo stesso file
Nelle librerie .h metti questo all'inizio (differente per ogni file h)

#ifndef LIBRERIA_UNO
#define LIBRERIA_UNO
....
.....
(codice libreria)
....
.....
....
.....

#endif