The information in this article applies to:
SYMPTOMSA windows-based program that uses the Standard Template Library (STL) will not compile, and it generates several invalid parameter and syntax errors. CAUSEThe problem is caused by conflicting definitions of min and max. Min and max are defined as macros in Windef.h as follows: NOTE: Windef.h is included by Windows.h, which is included in nearly every
Windows-based program.Min and max are defined as templated functions in the Standard Template Library (STL). The following definitions of min and max can be found in the file Algobase.h:
Because the Windef.h definition is a macro, the function definitions cause
syntax errors when both Windef.h (or Windows.h) and Algobase.h (from the
STL) are included. The precise errors will depend on the order in which the
two are compiled.
RESOLUTIONSimply define the NOMINMAX preprocessor symbol. This can be done in the Developer Studio project under Build, Settings, on the C/C++ tab, in the Preprocessor category. This will suppress the min and max definitions in Windef.h. STATUSThis behavior is by design. Additional query words:
Keywords : kb3rdparty STLIss |
Last Reviewed: July 22, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |