Ld rapporte une erreur de reference
brutus
-
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11653 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Si j'essai de compiler le programme suivant avec
gcc sin30.c -o sin30
ld rapporte une erreur disant qu'il ne trouve pas la reference a la fonction sin().
Mais si je remplace les arguments param et pi par leur valeur numerique ca compile sans probleme et le programme s'execute correctement.
Si j'essai de compiler le programme suivant avec
gcc sin30.c -o sin30
ld rapporte une erreur disant qu'il ne trouve pas la reference a la fonction sin().
Mais si je remplace les arguments param et pi par leur valeur numerique ca compile sans probleme et le programme s'execute correctement.
/* programme sin30.c */
#include <stdio.h>
#include <math.h>
#define PI 3.14159265
int main ()
{
double param, result;
param = 30.0;
result = sin (param*PI/180.0);
printf ("The sine of %lf degrees is %lf.\n", param, result );
return 0;
}
3 réponses
Salut,
Oui il faut utiliser -lm (L minuscule) pour que l'édition des liens se déroule correctement.
De plus, ne met pas %lf pour afficher un double mais seulement %f.
Cdlt
Oui il faut utiliser -lm (L minuscule) pour que l'édition des liens se déroule correctement.
De plus, ne met pas %lf pour afficher un double mais seulement %f.
Cdlt
%f ce n'est pas pour les float et %lf pour les double ??
Oui. Mais printf en tant que fonction à nombre d'arguments variables, le float sera converti en double. Donc %f dans ce cas désigne plutôt un double. %lf a un comportement indéfini dans printf en C90. En C99, il est accepté pour éviter la confusion, mais il désignera %f.
Cdlt
Oui. Mais printf en tant que fonction à nombre d'arguments variables, le float sera converti en double. Donc %f dans ce cas désigne plutôt un double. %lf a un comportement indéfini dans printf en C90. En C99, il est accepté pour éviter la confusion, mais il désignera %f.
Cdlt