取消定义最小和最大宏

use*_*754 4 c++ c-preprocessor

在源代码中,我看到min和max未定义.可能是什么原因?

// remove stupid MSVC min/max macro definitions
#ifdef WIN32
   #undef min
   #undef max
#endif
Run Code Online (Sandbox Code Playgroud)

jua*_*nza 8

一些MSVC头具有预处理器宏来定义minmax.这很糟糕,原因很多.首先,它们不是保留名称,第二,标准库函数具有相同的名称.

所以MSVC或其他任何通过定义minmax作为宏来破坏规则和代码,以及使用undef是解决该问题的解决办法.

请参阅此相关问题,该问题显示了定义如何破坏代码.