Log2 en C sous linux

Résolu/Fermé
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020 - 12 août 2008 à 19:19
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 13 août 2008 à 15:30
Bonjour,
j un problème qui m'empêche de dormir. en fait je voulais un petit programme qui calcul les logarithmes.
j'ai écris ce code mais lors de la compilation il m'affiche : attention implicite declaration of built_ in fonction log2.

voici le code que j'ai écris:
#include <math.h>
#include <stdio.h>

int main()
{
double x=5;
x=log2(x);

return 0;
}

aider moi s'il vous plait
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
12 août 2008 à 19:37
Salut
Pour compiler avec la bibliothèque math.h, il ne faut pas oublier -lm (L minuscule).
Voilà, tu peux retourner dormir ;)
Cdt
1
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020
12 août 2008 à 20:14
merci feddy pour ta réponse.
en fait quand je compile directement sans -lm: il m'affiche ceci:


attention : incompatible implicit declaration of built-in function 'log2'
/tmp/ccWNbx2m.o: In function `main':
log.c:(.text+0x18): undefined reference to `log2'
collect2: ld a retourné 1 code d'état d'exécution

et quand je compile avec -lm il m'affiche:

attention : incompatible implicit declaration of built-in function 'log'
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 août 2008 à 10:23
Oui, c'est normal. La fonction log2 ne fait pas partie de la bibliothèque standard C99. Et comme par défaut gcc prend le standard C89. Il affiche un warning. Pour spécifier à gcc que tu souhaites utiliser le standard C99, utilise le flag -std=C99.
Cdt
1
hnouna2007 Messages postés 70 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 7 juillet 2020
13 août 2008 à 15:24
j'ai compilé le code par: gcc programme .c -lm -std=C99
mais le compilateur m'affiché l'erreur suivante.
cc1: erreur: option "-std=C99" de la ligne de commande non reconnue
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
13 août 2008 à 15:29
man gcc dit : -std=c99, avec un 'c' minuscule.
man est ton ami man
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
13 août 2008 à 15:30
Bien vu ;)
0