« Programmation C/Mathématiques » : différence entre les versions

Contenu supprimé Contenu ajouté
Tavernierbot (discussion | contributions)
-lm -> GCC
Ligne 7 :
#include <errno.h>
</pre>
mais aussi ajouter l'option <code>-lm</code> lors de la compilation (ou plus précisément lors de l'édition des liens).
 
La gestion portable des erreurs est encore un grief à porter au casier déjà bien lourd du langage C. Dans le cas où la détection d'erreur est critique, voici la marche à suivre pour détecter qu'une fonction mathématique a échoué :
Ligne 15 ⟶ 14 :
 
En effet, dans la plupart des cas, ces fonctions ne positionnent cette variable qu'en cas d'erreur, laissant la valeur inchangée en cas de succès. Il faut donc s'assurer qu'une valeur différente de 0, est bien le résultat du dernier appel et non d'un autre antérieur. La pénibilité est surtout dû au fait que les fonctions mathématiques ne renvoient pas de code d'erreur, contrairement à la plupart des autres fonctions utilisant aussi ''errno'', ce qui oblige à positionner explicitement sa valeur avant l'appel. Cela dit, rares sont les cas où on a besoin d'une attitude aussi paranoïaque.
 
'''Note :'''
Sur certains compilateurs comme GCC, il est nécessaire d'ajouter durant l'édition des liens une option pour que la « librairie mathématique » soit liée au programme. Pour GCC, cette option est <tt>-lm</tt>. Sans cette option, le programme pourra compiler, mais le résultat à l'exécution sera surprenant...
 
== Exponentiations ==
 
<pre>
double exp ( double x );