2014-01-31 53 views
4

在源代码中,我看到最小和最大值未定义。这可能是什么原因?未定义最小和最大宏

// remove stupid MSVC min/max macro definitions 
#ifdef WIN32 
    #undef min 
    #undef max 
#endif 
+0

也许作者需要重新定义它们?或者他们干扰作者创建的实际最小/最大功能。 – bblincoe

+7

也许他们想要移除最小和最大的愚蠢的MSVC宏;-) – dasblinkenlight

+2

@bblincoe:或干扰标准库头声明的实际最小/最大函数。 –

回答

7

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

所以MSVC或任何通过将minmax定义为宏来破坏规则和代码,并且使用undef是解决该问题的解决方法。

请参阅this related question,它显示了定义如何破坏代码。