Bonjour,
J'ai le code:
et l'erreur:Code:
1
2
3 std::numeric_limits<short> info; int max = info.max(); //int max = (int)info.max();
Quel est le probleme ?Citation:
error C2059: syntax error : '('
Version imprimable
Bonjour,
J'ai le code:
et l'erreur:Code:
1
2
3 std::numeric_limits<short> info; int max = info.max(); //int max = (int)info.max();
Quel est le probleme ?Citation:
error C2059: syntax error : '('
Ce code est l�gal, � condition d'avoir inclus <limits>, mais on pr�f�re �crire simplementCode: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:
Citation:
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:#undef max
Tu peux aussi d�finir NOMINMAX avant d'inclure <windows.h>.
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.Citation:
Envoy� par NiamorH
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: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+