See 
http://developer.valvesoftware.com/wiki/SDK_Known_Issues_List#First_big_pass_at_-Wall_and_consistent_code
for a more thorough and robust elimination of Valve's bad practice of using 
min/max macros, which I posted a year or so ago (probably where some of yall 
remember this discussion going on before.)

At 2007/01/02 05:53 PM, you wrote:
>Sorry, i have forgotten to had this in my mail !
>
>I have writed :
>
>#ifndef _WIN32
>#undef min
>#undef max
>#endif
>
>Because only windows sdk don't compatible with stdc++ ^^
>In a dream it's possible to compile on Solaris, GNU/Hurd system, HP-UX
>etc...
>(It's not possible because any specific asm code used into source).
>
>I don't have any other problems.
>Check your case filename and #include.
>
>You can process many modification of sdk source with my script.
>_ rename all directory and .cpp  and .h to low case.
>_ all #include <foo> are rewrite in lowcase.
>_ all .vcproj modified for convert filename to lowcase.
>_ hl_sdk.vcproj corrected (the bad ";" converted to ",")
>_ Makefile.vcpm modified for use lowcase
>_ info_darknessmode_lightsource.cpp corrected
>_ add #undef... to stdstring.h
>
>This script can be run with sdk already modified (Perfect Dark Mod have
>used it succefully).
>And it can detect if action already processed.
>
>Download here :
>http://bombela.free.fr/data/LowCaseAndPatchSourceSDK.sh
>
>Good play ;)
>
>@+
>Bombela.
>
>PS: Sorry for my bad english.
>
>Jed a écrit :
>>Thanks,
>>
>>That worked for me, althoug I had to do it like this:
>>
>>#ifdef _LINUX
>>#undef min
>>#undef max
>>#endif
>>
>>or my Windows build wouldn't compile.
>>
>>Well thats one problem solved. Now I have a big error with
>>memoverride.cpp but I belive thats already logged in bugzilla.
>>
>>- Jed
>>
>>
>>On 30/12/06, Bombela <[EMAIL PROTECTED]> wrote:
>>>This is a multi-part message in MIME format.
>>>--
>>>[ Picked text/plain from multipart/alternative ]
>>>Hello,
>>>
>>>The problem is a conflit with valve definition of min/max in
>>>public/minmax.h and the definition in stdc++ (file "limits").
>>>
>>>Tank for your tip Garry.
>>>
>>>For resolve it's simple.
>>>In file public/stdstring.h of your Source SDK, you can add :
>>>
>>>#undef min
>>>#undef max
>>>
>>>before : #include <string>
>>>
>>>The include <string> use <limits> and others files when use stdc++
>>>min/max definition.
>>>
>>>The compilation with gcc 3.4.6 is now possible.
>>>
>>>$ gcc-3.4 -dumpversion
>>>3.4.6
>>>$ du -h server_i486.so
>>>du: cannot access `server_i486.so': No such file or directory
>>>$ time make -j5 -f Makefile
>>>[...]
>>>ccache g++-3.4 -w -I../dlls/. -I../dlls/../utils...
>>>[...]
>>> /usr/local/lib/libstdc++.so.6.0.1
>>>/usr/local/lib/gcc/i486-linux-gnu/3.4.1/libgcc_eh.a
>>>make[1]: Leaving directory `/media/fast/pdark/code/src/linux_sdk'
>>>
>>>real    1m23.312s
>>>user    2m45.022s
>>>sys     0m27.522s
>>>$ du -h server_i486.so
>>>14M     server_i486.so
>>>
>>>Coool ;)
>>>
>>>Bombela
>>>(Pssst' : Sorry for my bad english !)
>>>
>>>Garry Newman a écrit :
>>>> --
>>>> [ Picked text/plain from multipart/alternative ]
>>>> I came across this about a year ago too. It was a pretty common
>>>problem -
>>>> not sure why there isn't more info on it (there was back then).
>>>>
>>>> >From what I remember it's something in stdstring.h. It includes
>>>some file
>>>> that re-defines min and max in linux. The fix was to just #undef
>>>min and
>>>> #undef max and then include another file (I think). Wish I could
>>>find where
>>>> I found out how to fix it.
>>>>
>>>> garry
>>>>
>>>> On 12/23/06, Jed <[EMAIL PROTECTED]> wrote:
>>>>
>>>>> Well after solving all the other problems I've managed to get the
>>>>> current HL2MP SDK to start compiling but I've hit an error regarding
>>>>> min/max.
>>>>>
>>>>> I've searched the archives and found mention to it but no definate
>>>>> answer on how to fix it. I've looked at the KI list for Linux on the
>>>>> SDK but it's really confusing as to what issues are from the old SDK,
>>>>> which are just with the new or what remain from both.
>>>>>
>>>>> So, in short - I'm compiling the current 31st Oct 2006 HL2MP codebase
>>>>> with GCC 3.4.6.
>>>>>
>>>>> Everything is set-up and running as far as a build environment is
>>>>> concerned and the compile begins before stopping with this:
>>>>>
>>>>> /usr/bin/g++34 -w -I../dlls/../game_shared/hl2 -I../dlls/.
>>>>> -I../dlls/../public -I../dlls/../public/tier1
>>>-I../dlls/../game_shared
>>>>> -I../dlls/../utils/common -I../dlls/../dlls -I../dlls/../../dlls
>>>>> -I../dlls/../dlls/hl2_dll -I../dlls/../dlls/hl2mp_dll
>>>>> -I../dlls/../game_shared/hl2mp -I../dlls/./episodic -DHL2_EPISODIC
>>>>> -DHL2MP -DHL2_DLL -DUSES_SAVERESTORE -DNDEBUG -DGAME_DLL
>>>>> -Dsprintf=use_Q_snprintf_instead_of_sprintf -DVECTOR
>>>>> -Dstrncpy=use_Q_strncpy_instead -D_snprintf=use_Q_snprintf_instead
>>>>> -DPROTECTED_THINGS_ENABLE  -mtune=i686 -march=pentium3 -mmmx -O3
>>>>> -fpermissive -D_LINUX -DNDEBUG -Dstricmp=strcasecmp
>>>>> -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp
>>>>> -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca
>>>>> -Dstrcmpi=strcasecmp -Usprintf=use_Q_snprintf_instead_of_sprintf
>>>>> -Ustrncpy=use_Q_strncpy_instead -UPROTECTED_THINGS_ENABLE -o
>>>>> obj/server_i486/dlls/npc_talker.o -c ../dlls/npc_talker.cpp
>>>>> In file included from
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/memory:61,
>>>
>>>>>
>>>>>                  from
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/string:48,
>>>
>>>>>                  from ../dlls/../public/stdstring.h:26,
>>>>>                  from ../dlls/ai_playerally.h:18,
>>>>>                  from ../dlls/npc_talker.h:42,
>>>>>                  from ../dlls/npc_talker.cpp:10:
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:292:22:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>> In file included from
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/memory:61,
>>>
>>>>>                  from
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/string:48,
>>>
>>>>>                  from ../dlls/../public/stdstring.h:26,
>>>>>                  from ../dlls/ai_playerally.h:18,
>>>>>                  from ../dlls/npc_talker.h:42,
>>>>>                  from ../dlls/npc_talker.cpp:10:
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:292:
>>>
>>>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:295:
>>>
>>>>> error: expected `;' before "static"
>>>>> /usr/lib/gcc/i386-redhat-linux
>>>>> /3.4.6/../../../../include/c++/3.4.6/limits:320:23:
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:320:
>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:323:
>>>
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:373:23:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:373:
>>>
>>>>> error: expected `;' before "throw"
>>>>> /usr/lib/gcc/i386-redhat-
>>>>> linux/3.4.6/../../../../include/c++/3.4.6/limits:376:
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:423:30:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:423:
>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:426:
>>>
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:473:32:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:473:
>>>
>>>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:476:
>>>
>>>>> error: expected `;' before "static"
>>>>> /usr/lib/gcc/i386-redhat-linux
>>>>> /3.4.6/../../../../include/c++/3.4.6/limits:523:26:
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:523:
>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:526:
>>>
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:573:24:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:573:
>>>
>>>>> error: expected `;' before "throw"
>>>>> /usr/lib/gcc/i386-redhat-
>>>>> linux/3.4.6/../../../../include/c++/3.4.6/limits:576:
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:623:33:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:623:
>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:626:
>>>
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:673:22:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:673:
>>>
>>>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:676:
>>>
>>>>> error: expected `;' before "static"
>>>>> /usr/lib/gcc/i386-redhat-linux
>>>>> /3.4.6/../../../../include/c++/3.4.6/limits:723:31:
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:723:
>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:726:
>>>
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:773:23:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:773:
>>>
>>>>> error: expected `;' before "throw"
>>>>> /usr/lib/gcc/i386-redhat-
>>>>> linux/3.4.6/../../../../include/c++/3.4.6/limits:776:
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:823:32:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:823:
>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:826:
>>>
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:873:28:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:873:
>>>
>>>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:876:
>>>
>>>>> error: expected `;' before "static"
>>>>> /usr/lib/gcc/i386-redhat-linux
>>>>> /3.4.6/../../../../include/c++/3.4.6/limits:923:37:
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:923:
>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:926:
>>>
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:973:24:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:973:
>>>
>>>>> error: expected `;' before "throw"
>>>>> /usr/lib/gcc/i386-redhat-
>>>>> linux/3.4.6/../../../../include/c++/3.4.6/limits:976:
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:1029:25:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:1029:
>>>
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:1032:
>>>
>>>>> error: expected `;' before "static"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:1085:30:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>> /usr/lib/gcc/i386-redhat-
>>>>> linux/3.4.6/../../../../include/c++/3.4.6/limits:1085:
>>>>> error: expected `;' before "throw"
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/limits:1088:
>>>
>>>>> error: expected `;' before "static"
>>>>> In file included from
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/string:48,
>>>
>>>>>                  from ../dlls/../public/stdstring.h:26,
>>>>>                  from ../dlls/ai_playerally.h:18,
>>>>>                  from ../dlls/npc_talker.h:42,
>>>>>                  from ../dlls/npc_talker.cpp:10:
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/memory:77:62:
>>>
>>>>> macro "max" requires 2 arguments, but only 1 given
>>>>> In file included from
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/string:48,
>>>
>>>>>                  from ../dlls/../public/stdstring.h:26,
>>>>>                  from ../dlls/ai_playerally.h:18,
>>>>>                  from ../dlls/npc_talker.h:42,
>>>>>                  from ../dlls/npc_talker.cpp:10:
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/memory:
>>>
>>>>> In function `std::pair<_Tp*, ptrdiff_t>
>>>>> std::__get_temporary_buffer(ptrdiff_t, _Tp*)':
>>>>>
>>>>>
>>>/usr/lib/gcc/i386-redhat-linux/3.4.6/../../../../include/c++/3.4.6/memory:77:
>>>
>>>>> error: `max' is not a member of `std::numeric_limits<int>'
>>>>> make[1]: *** [obj/server_i486/dlls/npc_talker.o] Error 1
>>>>> make[1]: Leaving directory `/usr/local/src/Source SDK/linux_sdk'
>>>>> make: *** [mod] Error 2
>>>>>
>>>>>
>>>>> I'm sure I can't be the only one with this problem and googling for
>>>>> the error message didn't reveal any insights of how to solve it.
>>>>>
>>>>> Little help?
>>>>>
>>>>> - Jed
>>>>>
>>>>> _______________________________________________
>>>>> To unsubscribe, edit your list preferences, or view the list
>>>archives,
>>>>> please visit:
>>>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>>>>
>>>>>
>>>>>
>>>> --
>>>>
>>>> _______________________________________________
>>>> To unsubscribe, edit your list preferences, or view the list
>>>archives, please visit:
>>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>>>
>>>>
>>>>
>>>>
>>>--
>>>
>>>_______________________________________________
>>>To unsubscribe, edit your list preferences, or view the list
>>>archives, please visit:
>>>http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>>
>>
>>_______________________________________________
>>To unsubscribe, edit your list preferences, or view the list archives,
>>please visit:
>>http://list.valvesoftware.com/mailman/listinfo/hlcoders
>>
>>
>
>_______________________________________________
>To unsubscribe, edit your list preferences, or view the list archives, please 
>visit:
>http://list.valvesoftware.com/mailman/listinfo/hlcoders

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to