Je deviens fou Depuis hier je n'arrive pas à utiliser une fonction de math.h (floor). J'ai un exemple test.c qui l'utilise et qui fonctionne. Parallèlement, j'ai progressivement réduit mon petit prog problématique dice.c à presque rien, y compris il inclut directement ce dont il a besoin (au lieu de passer par mon toolkit habituel) et n'a même plus de header associé. Ce qui fait qu'au final les 2 exemples sont proches. Mais je n'arrive toujours pas à utiliser floor dans dice.c, et je ne vois pas où est la différence qui l'empêche. Voici:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
// test.c
#include <stdio.h>
#include <math.h>
 
int main () {
   printf ("floor 1.1 : %f\n", floor(1.1)) ;
   return 1 ;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// dice.c
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
typedef unsigned int uint ;
 
uint random_ordinal (uint max) {
   const float RANDOM_MAX = (float)(RAND_MAX) + 1 ;
   float random_01 = (float)(rand ()) / RANDOM_MAX ;
   return 1 + (uint)(floor(max * random_01)) ;
}
 
int main () {
   printf ("random ordinal max 3 : %d\n", random_ordinal(3)) ;
   return 1 ;
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
spir@ospir:~/prog/C/WELLRandom$ gcc -c test.c -o test.o
spir@ospir:~/prog/C/WELLRandom$ gcc test.o -o test
spir@ospir:~/prog/C/WELLRandom$ ./test
floor 1.1 : 1.000000
spir@ospir:~/prog/C/WELLRandom$ gcc -c dice.c -o dice.o
spir@ospir:~/prog/C/WELLRandom$ gcc dice.o -o dice
dice.o: In function `random_ordinal':
dice.c:(.text+0x4b): undefined reference to `floor'
collect2: ld returned 1 exit status
Voilà, je poste ce message au risque de passer pour un imbécile, mais c'est peut-être moins imbécile que de rester coincé pour ne pas passer pour un imbécile... et là, je suis complètement coincé . Ca doit être une idiotie terriblement stupide, dites-moi.

Merci,
denis