Bonjour,
J'ai le code:
et l'erreur:
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();
Quel est le probleme ?error C2059: syntax error : '('
Bonjour,
J'ai le code:
et l'erreur:
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();
Quel est le probleme ?error C2059: syntax error : '('
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();
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 '::'
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part #undef max
Tu peux aussi définir NOMINMAX avant d'inclure <windows.h>.
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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..
Peu importe, du moment que c'est fait avant ces inclusions. Voire même dans les options du préprocesseur directement.Envoyé par NiamorH
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
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 :
De cette façon on ne détruit pas les définitions de macros existantes à coup de #define et #undef.
Code : Sélectionner tout - Visualiser dans une fenêtre à part int max = (std::numeric_limits<short>::max)();
Petite discussion à ce propos sur la mailing list de Boost:
http://lists.boost.org/Archives/boos.../06/106454.php
a+
Partager