std::numeric_limits::max()編譯錯誤-正解

轉自:http://blog.chinaunix.net/uid-17102734-id-2830143.html

今天使用了一下STL中的z數值極限<Numeric Limits>竟然編譯不過,

std::numeric_limits<double>::max()

出現如下錯誤: 

warning     C4003:     “max”宏的實參不足       
error     C2589:     “(”     :     “::”右邊的非法標記

google了一下,原來是需要把max用括號括起來避免和windows定義的宏混淆

(std::numeric_limits<double>::max)()

因爲Windef.h中定義了

#ifndef max
#define max(a,b)            (((a) > (b)) ? (a) : (b))
#endif

所以會產生編譯錯誤

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章