Ld rapporte une erreur de reference
brutus
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 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; }
A voir également:
- Iptv smarters pto
- Rapport erreur windows - Guide
- Instagram une erreur s'est produite - Forum Instagram
- Erreur 0x80070643 - Accueil - Windows
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
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