2014-01-31 52 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,它顯示了定義如何破壞代碼。