Rechercher : dans
Par :

Probleme en C avec la fonction fmod

Dernière réponse le 15 oct 2009 à 23:49:30 FrenchFigraro, le 15 oct 2009 à 17:33:45 
 Signaler ce message aux modérateurs

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.p­df ), 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 ! ;-)
Configuration: Linux
Firefox 3.0.14

Meilleures réponses pour « Probleme en C avec la fonction fmod » dans :
Les files en langage C VoirLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un...
Générer des nombres aléatoires efficacement avec rand() VoirGénérer des nombres aléatoires efficacement avec rand() Vous avez peut-être remarqué qu'en C, en utilisant la fonction rand() de la bibliothèque standard, vous obtenez des résultats décevants, trop souvent les mêmes. Prenons un exemple, vous...
Utilisation des sémaphores Système V VoirIntroduction Il n'est pas forcément facile de trouver un mode d'emploi clair des sémaphores System V, surtout en français. Cette astuce ne se veut pas exhaustive, mais on va quand même essayer de débroussailler un peu le chemin et clouer quelques...
Langage C++ - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Langage C - Les fonctions VoirLa notion de fonction On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs parties du...
Les structures en langage C VoirDifférence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de...

1

 loupius, le 15 oct 2009 à 23:49:30
  • +1

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.

Répondre à loupius
Collection CommentÇaMarche.net