Pagina 1 di 1

compilazione codice programma con header math.h

MessaggioInviato: 22 set 2016, 23:23
da huyol
ciao a tutti,
per cortesia qualcuno può spiegarmi il perché per compilare un programma contenente l'header <math.h> nel comando di compilazione, al termine di esso, occorre scrivere -lm?

Codice: Seleziona tutto
franco@HP-15-Notebook-PC:~/Scrivania$ gcc QUADRATO.c -o quadrato -lm
franco@HP-15-Notebook-PC:~/Scrivania$ ./quadrato
PROGRAMMA PER L'ELEVAZIONE AL QUADRATO DI UN NUMERO
digita il numero:
21
Il quadrato di 21.000000 è 441.000000
franco@HP-15-Notebook-PC:~/Scrivania$


Codice: Seleziona tutto
//PROGRAMMA PER L'ELEVAZIONE AL QUADRATO DI UN QUALSIASI NUMERO

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

int main()

{
float numero;
printf ("PROGRAMMA PER L'ELEVAZIONE AL QUADRATO DI UN NUMERO \n");
printf("digita il numero: \n");
scanf ("%f", &numero);

printf ("Il quadrato di %f è %f \n", numero, pow(numero,2));

return 0;
}

Re: compilazione codice programma con header math.h

MessaggioInviato: 22 set 2016, 23:35
da DirtyDeeds
Il file math.h è un header file, ovvero è un file che contiene le dichiarazioni delle costanti, delle variabili e delle funzioni della libreria matematica, ma non contiene la libreria matematica, cioè le definizioni vere e proprie di tali oggetti.

Le librerie vengono aggiunte dal linker, dopo la compilazione. Tutte le funzioni della libreria standard, tranne quelle della libreria matematica, sono aggiunte automaticamente. L'opzione -lm dice al linker di aggiungere anche la libreria matematica. Ci sono vari motivi per questo comportamento, se ne era discusso un po' qui. In particolare, in questo messaggio spiegavo il comportamento dell'opzione -lm.

Re: compilazione codice programma con header math.h

MessaggioInviato: 24 set 2016, 14:38
da huyol
grazie mille DirtyDeesds, come sempre preciso e chiarissimo :ok: