<分区>
这行代码无法在 VS2015 Update 3 中编译:
auto a = std::numeric_limits<long long>::max();
它找不到max()
的定义。这是为什么?
<分区>
这行代码无法在 VS2015 Update 3 中编译:
auto a = std::numeric_limits<long long>::max();
它找不到max()
的定义。这是为什么?
最佳答案
max
调用可能会干扰 Windows SDK header 中定义的“邪恶的”max
preprocessor 宏,您可能已经包含(直接或间接)。
一个选项是防止预处理器 max
宏启动,使用额外的一对括号:
... = (std::numeric_limits<long long>::max)();
作为附加选项,您可以考虑#define #NOMINMAX
before 包括 Windows header 。这将阻止上述 min
和 max
预处理器宏的定义。
但是,请注意某些 Windows header (如 GDI+ header )确实需要 Win32 的 min
和 max
预处理器宏,因此在此类在某些情况下,使用额外的一对括号可能是更好的选择。
关于c++ - 为什么 std::numeric_limits<long long>::max() 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40492414/