Probleme avec round

Résolu
cs_darkwhite Messages postés 133 Date d'inscription vendredi 17 novembre 2000 Statut Membre Dernière intervention 29 avril 2008 - 15 mai 2007 à 07:14
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 - 16 mai 2007 à 01:27
Salut a tous je suis en train de faire un code ultra simple qui arrondi un nombre :

#include <stdio.h>
#include <math.h>
int main()
{
  double value;
  scanf("%f",&value);
  printf("%f",round(value));
  return 0;
}
 Or ah la compilation gcc refuse, et butte sur la fonction round

darkwhite:/media/sda5/Dossier pierre/c/ioi# gcc -lm -o arrondi arrondi.c
arrondi.c: In function ‘main’:
arrondi.c:7: warning: incompatible implicit declaration of built-in function ‘round’

Pourtant j'ai bien declaré math.h et j'ai ajouté -lm a la commande gcc ????

MErci de votre aide

4 réponses

katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
15 mai 2007 à 20:18
Salut,
Essayes avec %lf.
3
cs_darkwhite Messages postés 133 Date d'inscription vendredi 17 novembre 2000 Statut Membre Dernière intervention 29 avril 2008
15 mai 2007 à 21:45
Ok merci
0
cs_darkwhite Messages postés 133 Date d'inscription vendredi 17 novembre 2000 Statut Membre Dernière intervention 29 avril 2008
15 mai 2007 à 21:53
J'ai toujours ce message d'erreur :
darkwhite:/media/sda5/Dossier pierre/c/ioi# gcc -lm -o arrondi arrondi.c
arrondi.c: In function ‘main’:
arrondi.c:8: warning: incompatible implicit declaration of built-in function ‘round’
*mais le code semble marché
sauf qu'il est refusé par le site sur lequel je le soumet (ioi)
0
katsankat Messages postés 571 Date d'inscription vendredi 30 décembre 2005 Statut Membre Dernière intervention 12 juillet 2012 3
16 mai 2007 à 01:27
Plusieurs idées.

1) Regarder le ficher /usr/include/math.h et les includes-sous-jascents.
Peut-être que la réponse s'y trouve. Ou que round() n'y figure pas! D'ou l'histoire de built-in! En effet round() ne figure pas dans la LibC.

2) Passer une option à gcc qui va juste invoquer le préprocesseur, sans compiler ni linker. Par exemple gcc -E main.c > test.txt
Puis ouvrir test.txt et rechercher le mot round.

3) Compiler avec -std=c99 et linker avec -lm.

4) Passer l'option -fno-builtin-round pourrait cacher le warning.





5) Essayer avec ceil() ou floor() plutôt que round().
0
Rejoignez-nous