Quote:
Originally posted by "noodles"
1)Quando cerco di compilare un programma dove compare la funzione pow() mi da questo errore:
/tmp/ccq2Qsw8.o(.text+0x33): In function `main':
: undefined reference to `pow'
collect2: ld returned 1 exit status
ecco il programma:
/*Inizio*/
#include<stdio.h>
#include<math.h>
main()
{
int x,y,tot;
x=5;
y=2;
tot=pow(x,y);
printf("%d\n", tot);
}
/*fine*/
Uso linux e compilo con gcc.
2)Se al termine del programma inserisco
return=0;
mi da un errore di compilazione. Eppure nel libro dove sto studiando lo inserisce in quasi tutti i prohgrammi, e anche copiando gli esempi del libro da sempre lo stesso errore. Perche'?
grazie
|
Allora, su questo programma hai due problemi. Il primo problema evidenziato è un problema di linking. Se mi dai esattamente versione del compilatore che usi e il comando esatto che digiti per compilare, ti posso aiutare. Comunque, come ti ha suggerito verloc, stai usando pow() in modo sbagliato, perchè il suo prototipo è:
Codice:
double pow(double base, double power);
anche se questo non dovrebbe giustificare problemi di linking. Usa sempre il flag -Wall quando compili.
Il secondo quesito deriva da una programmazione che con i compilatori + recenti ormai è considerato un errore. In C main() non supporta + il tipo int implicito e quando devi indicare che una funzione non deve prendere in ingresso nulla devi specificare il tipo void.
Quindi devi sistemare la funzione main() in questo modo:
Codice:
int main(void)
...
Poi prova a mettere il tuo return 0 e vedi che va.
Questo perchè forse stai leggendo il Kernighan Ritchie??