这行代码无法在VS2015 Update 3中编译:
String title = StringEscapeUtils.escapeJava(xmlResponse.getTitle()).replace(Constants.ESCAPED_NEWLINE, Constants.NEWLINE);
找不到auto a = std::numeric_limits<long long>::max();
的定义。这是为什么?
答案 0 :(得分:7)
max
调用可能会干扰Windows SDK标头中定义的“邪恶”max
预处理器宏,您可能已经(直接或间接)包含这些宏。
一个选项是使用附加的括号阻止预处理器max
宏启动:
... = (std::numeric_limits<long long>::max)();
作为附加选项,您可以在包含Windows标头的之前考虑 #define #NOMINMAX
。这将阻止上述min
和max
预处理器宏的定义。
但是,请注意,某些Windows标头(如GDI +)确实需要 Win32的min
和max
预处理器宏,因此在这种情况下使用额外的一对括号可能是更好的选择。