NOMINMAX 和 std::min/max 碰撞
要启用标准库的 std::min 和 std::max 函数,您已在 main.cpp 文件中定义了 NOMINMAX 宏。但是,您在其他文件中使用这些函数时遇到问题。
NOMINMAX 的定义是为了禁用 Windows 头文件中的某些旧定义,包括将 min 和 max 重新定义为宏。这是因为在早期版本的 Visual C 编译器中,这些宏是由 Windows 头文件定义的,可能与标准库的定义冲突。
要解决此问题,您需要确保在所有宏中都定义了 NOMINMAX您打算使用 std::min 或 std::max 的文件。但是,简单地将宏定义添加到其他文件中似乎不起作用。
这是因为 #define 指令具有全局作用域并影响文件中的所有后续代码。但是,宏不适用于已经经过预处理的代码。因此,后续文件中 NOMINMAX 的定义可能不会影响您已经编写的代码。
要解决此问题,您可以用括号将函数名称括起来:
(std::min)(x, y);
此语法将确保不应用类似函数的宏,并且编译器会将函数调用解析为 std::min。
以上是使用 std::min 和 std::max 时,为什么 NOMINMAX 在其他文件中不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!