轉自: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
所以會產生編譯錯誤