View Single Post
Old 12-07-2003, 18:28   #3
mjordan
Bannato
 
L'Avatar di mjordan
 
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR ‫Casco: XR1000 Diabolic 3
Messaggi: 27578
Re: [C]Due bravi domande (pow e return=0;)

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??
mjordan è offline   Rispondi citando il messaggio o parte di esso