Probleme en C avec la fonction fmod
Résolu
FrenchFigraro
Messages postés
108
Date d'inscription
Statut
Membre
Dernière intervention
-
loupius -
loupius -
Salut à tous
Je suis en train de développer un petit programme en C dans le cadre de mes TPs à la fac.
Le but de ce programme est d'effectuer le crible d'Eratosthène jusqu'à un entier N, entré par l'utilisateur
Vous pouvez voir le source ici ( http://tonio.berbineau.free.fr/programmes/eratosthene.c ), ainsi que, si vous le souhaitez, le source python ( http://tonio.berbineau.free.fr/programmes/eratosthene.py ) ou encore le document contenant l'algorithme utilisé ( http://tonio.berbineau.free.fr/programmes/algo_eratosthene.pdf ), histoire de comprendre comment le programme fonctionne sans se le farcir entièrement
J'ai un probleme avec la fonction fmod, qui est censée être incluse dans la bibliothèque math.h
le compilateur me renvoie le message d'erreur suivant:
si j'ai bien compris, la fonction fmod n'est pas définie. Pourtant, d'après le K&R, elle fait partie des bibliothèques standards, un de mes potes l'a incluse aussi sans soucis
Mes includes en en-tête du programme sont les suivants:
l'appel de fonction se trouve à la ligne 42 de mon programme et est formulé comme suit:
Où if est (sans blague ?) l'ouverture d'une structure conditionnelle, et testmultiple et premier sont des variables exprimées en float
Je n'ai pas utilisé de fonctions et sous-programme car c'est un domaine où je ne me sens pas encore super à l'aise, mais je sais qu'il y a pas mal de zones de ce programmes qui pourraient être 'externalisées'. De plus, les sous-programmes font l'objet d'une autre U.E. et ne sont pas demandés dans ce cours-ci ;-)
Ma question est donc la suivante: Mais qu'est-ce qui cloche dans mon appel de fmod et/ou dans mes include pour que le compilateur refuse de valider mon programme ?
Pour info, ma config:
OS: GNU-Linux (Ubuntu 9.04, Noyau 2.6.28-15-generic)
Proc: Intel Celeron
Compilateur: gcc 4.3.3
Merci d'avance ! ;-)
Je suis en train de développer un petit programme en C dans le cadre de mes TPs à la fac.
Le but de ce programme est d'effectuer le crible d'Eratosthène jusqu'à un entier N, entré par l'utilisateur
Vous pouvez voir le source ici ( http://tonio.berbineau.free.fr/programmes/eratosthene.c ), ainsi que, si vous le souhaitez, le source python ( http://tonio.berbineau.free.fr/programmes/eratosthene.py ) ou encore le document contenant l'algorithme utilisé ( http://tonio.berbineau.free.fr/programmes/algo_eratosthene.pdf ), histoire de comprendre comment le programme fonctionne sans se le farcir entièrement
J'ai un probleme avec la fonction fmod, qui est censée être incluse dans la bibliothèque math.h
le compilateur me renvoie le message d'erreur suivant:
/tmp/ccpnbQEh.o: In function `main': eratosthene.c:(.text+0x10a): undefined reference to `fmod' collect2: ld a retourné 1 code d'état d'exécution
si j'ai bien compris, la fonction fmod n'est pas définie. Pourtant, d'après le K&R, elle fait partie des bibliothèques standards, un de mes potes l'a incluse aussi sans soucis
Mes includes en en-tête du programme sont les suivants:
#include <stdio.h> #include <math.h> #include <stdlib.h>
l'appel de fonction se trouve à la ligne 42 de mon programme et est formulé comme suit:
if (0 == fmod(testmultiple,premier))
Où if est (sans blague ?) l'ouverture d'une structure conditionnelle, et testmultiple et premier sont des variables exprimées en float
Je n'ai pas utilisé de fonctions et sous-programme car c'est un domaine où je ne me sens pas encore super à l'aise, mais je sais qu'il y a pas mal de zones de ce programmes qui pourraient être 'externalisées'. De plus, les sous-programmes font l'objet d'une autre U.E. et ne sont pas demandés dans ce cours-ci ;-)
Ma question est donc la suivante: Mais qu'est-ce qui cloche dans mon appel de fmod et/ou dans mes include pour que le compilateur refuse de valider mon programme ?
Pour info, ma config:
OS: GNU-Linux (Ubuntu 9.04, Noyau 2.6.28-15-generic)
Proc: Intel Celeron
Compilateur: gcc 4.3.3
Merci d'avance ! ;-)
A voir également:
- Probleme en C avec la fonction fmod
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Fonction remplacer sur word - Guide
- Mise en forme conditionnelle avec fonction si - Guide
1 réponse
Bon, le problème est classique, il y a confusion de deux notions:
- la déclarartion '#include <math.h>' permet à la première phase (la compilation) de connaître principalement les 'define' et les 'prototypes des fonctions' disponibles et ainsi d'assurer que la compilation se passe correctement,
- la déclaration de la bibliothèque 'm(ath)' qui permet de résoudre les liens lors de la deuxième phase 'l'éditions des liens'.
Il te suffit donc de préciser que la 'compilation' a besoin de cette bibliothèque.
Avec 'gcc' il te faudra donc ajouter '-lm'.
Bonne soirée.
- la déclarartion '#include <math.h>' permet à la première phase (la compilation) de connaître principalement les 'define' et les 'prototypes des fonctions' disponibles et ainsi d'assurer que la compilation se passe correctement,
- la déclaration de la bibliothèque 'm(ath)' qui permet de résoudre les liens lors de la deuxième phase 'l'éditions des liens'.
Il te suffit donc de préciser que la 'compilation' a besoin de cette bibliothèque.
Avec 'gcc' il te faudra donc ajouter '-lm'.
Bonne soirée.