Probleme avec round [Résolu]

Signaler
Messages postés
133
Date d'inscription
vendredi 17 novembre 2000
Statut
Membre
Dernière intervention
29 avril 2008
-
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
-
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

Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3
Salut,
Essayes avec %lf.
Messages postés
133
Date d'inscription
vendredi 17 novembre 2000
Statut
Membre
Dernière intervention
29 avril 2008

Ok merci
Messages postés
133
Date d'inscription
vendredi 17 novembre 2000
Statut
Membre
Dernière intervention
29 avril 2008

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)
Messages postés
571
Date d'inscription
vendredi 30 décembre 2005
Statut
Membre
Dernière intervention
12 juillet 2012
3
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().