mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-23 01:18:52 +08:00

Summary: This patch improves how libc++ handles min/max macros within the headers. Previously libc++ would undef them and emit a warning. This patch changes libc++ to use `#pragma push_macro` to save the macro before undefining it, and `#pragma pop_macro` to restore the macros and the end of the header. Reviewers: mclow.lists, bcraig, compnerd, EricWF Reviewed By: EricWF Subscribers: cfe-commits, krytarowski Differential Revision: https://reviews.llvm.org/D33080 git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@304357 91177308-0d34-0410-b5e6-96231b3b80d8
35 lines
1019 B
C++
35 lines
1019 B
C++
// -*- C++ -*-
|
|
//===------------------------ __undef_macros ------------------------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
|
#ifdef min
|
|
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
|
|
#if defined(_LIBCPP_WARNING)
|
|
_LIBCPP_WARNING("macro min is incompatible with C++. Try #define NOMINMAX "
|
|
"before any Windows header. #undefing min")
|
|
#else
|
|
#warning: macro min is incompatible with C++. #undefing min
|
|
#endif
|
|
#endif
|
|
#undef min
|
|
#endif
|
|
|
|
#ifdef max
|
|
#if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS)
|
|
#if defined(_LIBCPP_WARNING)
|
|
_LIBCPP_WARNING("macro max is incompatible with C++. Try #define NOMINMAX "
|
|
"before any Windows header. #undefing max")
|
|
#else
|
|
#warning: macro max is incompatible with C++. #undefing max
|
|
#endif
|
|
#endif
|
|
#undef max
|
|
#endif
|