She*_*een 4 c++ windows stl max visual-studio-2015
这行代码无法在VS2015 Update 3中编译:
auto a = std::numeric_limits<long long>::max();
Run Code Online (Sandbox Code Playgroud)
它找不到定义max().为什么是这样?
该max调用可能会干扰Windows SDK标头中定义的"邪恶" max 预处理器宏,您可能已经(直接或间接)包含这些宏.
一个选项是max使用另外一对括号来阻止预处理器宏启动:
... = (std::numeric_limits<long long>::max)();
Run Code Online (Sandbox Code Playgroud)
作为附加选项,您可以在包含Windows标头之前考虑.这将阻止前述和预处理器宏的定义.#define #NOMINMAX minmax
但请注意,某些Windows标头(如GDI +标题)确实需要 Win32 min和max预处理器宏,因此在这种情况下,使用额外的一对括号可能是更好的选择.
| 归档时间: |
|
| 查看次数: |
354 次 |
| 最近记录: |