<分区>
我将如何实际调用 std::max?该代码不会在 visual studio 2013 中编译,因为它采用“max”作为宏。
std::max( ... );
期望在“std::”之后有一个标识符。
<分区>
我将如何实际调用 std::max?该代码不会在 visual studio 2013 中编译,因为它采用“max”作为宏。
std::max( ... );
期望在“std::”之后有一个标识符。
最佳答案
您可以取消定义宏:
#undef max
编辑:似乎可以通过将宏安全地禁用
#define NOMINMAX
在定义它们的头文件之前(很可能是 windef.h
,您可能会间接包含它)。
为避免取消定义宏,您可以简单地将函数括在括号中
(std::max)(...)
正如 chris 在评论中指出的那样,类函数宏需要宏名称后的标记作为左括号才能展开。将名称括在括号中实际上只是一种技巧,一旦您将宏放在一边,就可以使下一个标记成为右括号,而不会改变含义。
关于c++ - 无法调用 std::max 因为 minwindef.h 定义了 "max",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22744262/