IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

pb avec numeric_limits


Sujet :

C++

  1. #1
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut pb avec numeric_limits
    Bonjour,

    J'ai le code:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    std::numeric_limits<short> info;
    int max = info.max();
    //int max = (int)info.max();
    et l'erreur:

    error C2059: syntax error : '('
    Quel est le probleme ?

  2. #2
    Membre �m�rite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par d�faut
    Ce code est l�gal, � condition d'avoir inclus <limits>, mais on pr�f�re �crire simplement
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int max = std::numeric_limits<short>::max();

  3. #3
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    J'ai deja essay� cette syntaxe. <limits> est bien inclu, j'ai la completion, mais en ecrivant la ligne que tu donne j'ai 2 erreurs de compil sous vc++exp:

    syntax error : '::'
    '(' : illegal token on right side of '::'

  4. #4
    Membre �m�rite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par d�faut
    Le probl�me doit-�tre que Microsoft d�fini une macro dont le nom est "max" dans un de ses headers et qui g�n�re un conflit ici. Solution : ajouterou enl�ver le header en question (<windows.h> may be).

  5. #5
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Tu peux aussi d�finir NOMINMAX avant d'inclure <windows.h>.

  6. #6
    Membre �prouv�
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par d�faut
    Exact, un #undef de max et min dans la fonction resoud le probleme.

    Pour NOMINMAX je n'inclu pas windows.h dans mon code, par contre il inclut des librairies qui peuvent elles inclure Windows.h..

  7. #7
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Citation Envoy� par NiamorH
    Pour NOMINMAX je n'inclu pas windows.h dans mon code, par contre il inclut des librairies qui peuvent elles inclure Windows.h..
    Peu importe, du moment que c'est fait avant ces inclusions. Voire m�me dans les options du pr�processeur directement.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    D�cembre 2004
    Messages
    68
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2004
    Messages : 68
    Par d�faut
    Bonjour,

    Pour info la m�thode "standard" pr�conis�e par Boost est de wrapper le nom de la m�thode avec des parenth�ses pour montrer au compilo que ce n'est pas d'une macro qu'on est en train de lui parler :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int max = (std::numeric_limits<short>::max)();
    De cette fa�on on ne d�truit pas les d�finitions de macros existantes � coup de #define et #undef.

    Petite discussion � ce propos sur la mailing list de Boost:
    http://lists.boost.org/Archives/boos.../06/106454.php

    a+

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. �tendre numeric_limits avec un type perso
    Par CedricMocquillon dans le forum C++
    R�ponses: 2
    Dernier message: 29/06/2009, 09h21
  2. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    R�ponses: 3
    Dernier message: 10/08/2002, 23h52
  3. Probl�me avec la m�moire virtuelle
    Par Anonymous dans le forum CORBA
    R�ponses: 13
    Dernier message: 16/04/2002, 16h10
  4. [Kylix] Runtime error 230 avec INDY
    Par Anonymous dans le forum EDI
    R�ponses: 2
    Dernier message: 23/03/2002, 11h51
  5. R�ponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo