Per esercitarmi, ho scritto un programma che usa delle funzioni di ordinamento degli array (bubblesort, insertion sort...): le funzioni le ho scritte nel file func.c e il loro prototipo in array.h; quando vado a compilare, gcc mi da questo errore:
Codice: Seleziona tutto
alessandro@lenovo:~/Scrivania/progetto$ gcc main.c func.c -o progetto.out
main.c: In function ‘main’:
main.c:10:8: warning: implicit declaration of function ‘time’ [-Wimplicit-function-declaration]
srand(time(NULL));
^
func.c: In function ‘bubble’:
func.c:48:10: warning: implicit declaration of function ‘ordinato’ [-Wimplicit-function-declaration]
while (!ordinato(array,lim))
^
func.c: At top level:
func.c:64:16: error: conflicting types for ‘ordinato’
unsigned short ordinato(int *array,int lim)
^
func.c:48:10: note: previous implicit declaration of ‘ordinato’ was here
while (!ordinato(array,lim))
^
Codice: Seleziona tutto
unsigned short ordinato(int *array,int lim)
{
int i;
for(i=0;i<lim-1;i++)
{
if (array[i]>array[i+1])
return 0;
}
return 1;
}
void bubble(int *array,int lim)
{
int i, T;
while (!ordinato(array,lim))
{
for(i=0;i<lim-1;i++)
{
if (array[i]>array[i+1])
{
T = array[i];
array[i] = array[i+1];
array[i+1] = T;
}
}
}
}
Ciò non accade se dichiaro le due funzioni nello stesso file della main.