weed | j'ai fais quelques petit tests dans un tout petit prog, mais j'arrive pas à faire un simple : 2 puissance 3
Code :
- #define _GNU_SOURCE
- #include <math.h>
- #include <stdio.h>
- main ()
- {
- double resultat;
- printf("\ncouccou\n" );
- resultat = pow ((double)2.,(double)3);
- printf("\ resultat = lf",resultat);
- printf("\nFIN\n\n" );
- }
|
et quand j'execute :
Code :
- [weed@localhost amusant]$ ./-tpow
- couccou
- resultat = 0
- FIN
|
comme indiqué dans l'aide ci-dessous :
- je pense avoir bien casté pour respecter le prototype : double pow (double, double) -j'ai indiqué comme entete :
#define _GNU_SOURCE
#include <math.h>
Citation :
NOM
pow, powf, powl - Fonction puissance
SYNOPSIS
#define _GNU_SOURCE
#include <math.h>
double pow (double x, double y);
float powf (float x, float y);
long double powl (long double x, long double y);
DESCRIPTION
La fonction pow() renvoie la valeur de x élevé à la puissance y.
ERREURS
EDOM L'argument x est négatif, et y n'est pas entier. Le résultat
serait un nombre complexe.
NOTES
Pour utiliser les fonctions de la bibliothèque mathématique, il ne faut
pas oublier d'ajouter l'argument -lm sur la ligne de commande de cc(1)
ou ld(1), lors de l'édition des liens.
CONFORMITÉ
SVID 3, POSIX, BSD 4.3, ISO 9899 Les variantes float et long double
sont des demandes C99.
|
- j'ai bien precisé l'option -lm en compilant
Code :
- [weed@localhost amusant]$ gcc tpow.c -o -tpow -lm
- tpow.c:11:16: warning: unknown escape sequence: '\040'
|
Citation :
14.17 Pourquoi j'ai des erreurs sur les fonctions de la bibliothèque, alors que j'ai bien inclus les entêtes ?
Les en-têtes (les .h) ne contiennent que les prototypes des fonctions. Le code proprement-dit de ces fonctions se trouve dans des fichiers objets. Ce code doit être « lié » au tien. Cela est fait par un éditeur de liens. Pour certaines fonctions, il faut spécifier explicitement à l'éditeur de liens où il peut les trouver (et ce particulièrement pour les fonctions non-standard). Par exemple, sous Unix, pour utiliser les fonctions mathématiques, il faut généralement lier le programme avec la bibliothèque adéquate : cc -lm monfic.o -o monprog
|
par contre j'ai peut etre pas bien specifier la fonction mathematique avec l'option -lm Message édité par weed le 31-05-2004 à 18:28:38
|