Sqrt [C]

Mrhaha
Salve ragazzi, ieri facevo un piccolo programma per riprendere un pò la mano con il C, e ho imparato a programmare da terminale dalle piattaforme Linux. Ma c'è un piccolo problema, il programma è il calcolo della norma di un vettore, e quindi necessito della struttura radice quadrata presente nella libreria math.h, ma non mi viene compilato dicendo "Undefined sqrt". Decido di compilarlo da windows con devc++ e parte, l'ho controllato con un pò di vettori e funzionava! Ma gcc per caso non legge la libreria math.h?

Risposte
nessuno.nobody
gcc -lm

Raptorista1
"Mrhaha":
ho imparato a programmare da terminale dalle piattaforme Linux.

Bravissimo! :D

Come già accennato [ma poco chiaramente, forse], è un problema di linking delle librerie: devi dire esplicitamente a gcc che vuoi usare la librerie math.
questo si fa specificando l'opzione -lm nel comando di compilazione
gcc -lm main.c -o norma

o qualcosa di simile.

In generale, ogni volta che aggiungi una libreria che non è core [come stdio o stdlib] devi specificare al compilatore di andare a cercare le librerie.
La sintassi è sempre la stessa: il simbolo -, la lettera l ed il nome della libreria, o l'abbreviazione come nel caso di math.h.

hamming_burst
e già che ci siamo, consiglio di aggiungere pure:
-Wall

dove ti mette in output i vari warning da NON evitare ma da corregger per togliere possibili bug.

Raptorista1
[xdom="raptorista"]Ho trasformato il lungo Off-Topic in una nuova discussione
ide-vs-vim-tools-e-compilazione-da-terminale-t95076.html[/xdom]

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.