Pagina 1 di 1

math.h

Inviato: sab 30 lug 2005, 18:11
da gallows
ho qualche problemino con le funzioni matematiche in C, forse sbaglio la sintassi o ometto qualcosa.. non capisco.
desidererei qualche chiarimento. esempio banale:

Codice: Seleziona tutto

#include <stdio.h>
#include <math.h>

int main(void) {

 float a=pow(2,3);
 printf("%f",a);
 
 return 0;

}
provo a compilarlo:

Codice: Seleziona tutto

> cc -Wall pluto.c 
/tmp/ccI9Zz7V.o(.text+0x29): In function `main':
: undefined reference to `pow'
collect2: ld returned 1 exit status
la sintassi di pow mi sembra corretta e ho incluso math.h. dove sbaglio?

glibc-2.3.5
gcc-3.3.6

grazie dell'attenzione :wink:

Inviato: sab 30 lug 2005, 19:04
da useless
devi linkare la libreria matematica manualmente: aggiungi -lm alla linea di comando di gcc.

Inviato: sab 30 lug 2005, 19:15
da gallows
toh, questa non la sapevo!
urge lettura di man gcc

grazie useful :wink:

Inviato: dom 31 lug 2005, 14:33
da ico
io non ho mai linkato math.h, appure mi funziava 8O ...l'uncio problema che mi sembra di ricordare, è che la funzione pow funzia solo con int, ma forse ricordo male..

ola ;)

Inviato: dom 31 lug 2005, 14:41
da Firetux
ho copiato e incollato il tuo programma nel file pluto.c e non ho problemi:
[firetux@p4m ~]$ cc -Wall pluto.c
[firetux@p4m ~]$ ./a.out
8.000000[firetux@p4m ~]$
glibc 2.3.4
gcc 3.4.3

Inviato: dom 31 lug 2005, 17:35
da gallows
no, la funzione pow() è giusta, tant'è che passando -lm a gcc funziona.
ho provato anche su un'altra current ma ho lo stesso "problema".

Inviato: dom 31 lug 2005, 17:44
da useless
non è un problema, è giusto così. tanto che ad esempio creando un progetto con kdevelop, di default mette -lm ai cflags.