[C++] problème de standard

Bonjour,
j'ai un code source dans lequel j'inclus <math.h> et où j'utilise la fonction isfinite().
Le problème c'est que gcc 3 me dit qu'il ne connais pas cette fonction, et je suis obliger de mettre std::isfinite().
En revanche gcc 4, lui connais isfinite() mais ne veux pas de std::isfinite().
je ne sais pas comment me sortir de ce merdier.
Je précise que je cherche à faire un code portable, donc que la solution doit fonctionner avec un maximum de compilateurs.

Merci



--
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur

3 réponses

  • Votes
  • Date
  • Date décroissante
  1. Salut,
    je suis pas un grand expert c++, mais peut etre avec un truc du sttyle tu pourrais t'en sortir:
    #if __GNUC__ > 3
    isfinite();
    #else
    std::isfinite()

    @+
    1. Contributeur
      Merci. C'est vrai que je pourrai faire un truc dans le genre, mais je préfèrerai une méthode un peu moins lourde à inclure dans le code.
    2. sinon une macro...mais je sais pas si ca fonctionnerai....
      #if __GNUC__ > 3
      #define IS_FINITE isfinite()
      #else
      #define IS_FINITE std::isfinite()

      mais pas testé et pas sur que ca fonctionne....
    3. Contributeur
      certe, c'est pareil, mais si le compilateur n'est pas gcc ??
    4. ben là....je sèche....dsl
  2. Contributeur
    bon, j'ai mis "unsing namespace std;" au début du fichier .cc et ça passe comme ça.
    1. Contributeur
      Voir using ;-)))
  3. Contributeur
    Bonjour,

    Si tu fais du C++, il ne faut pas utiliser gcc... Essaie d'utiliser g++

    Cdlt,