Je deviens fouDepuis 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 ; }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é
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. Ca doit être une idiotie terriblement stupide, dites-moi.
Merci,
denis
Partager