我遇到了问题std::max.我无法弄清楚.
int border = 35;
int myInt = 2;
int myOtherInt = 3;
int z = std::max(myInt + 2 * border, myOtherInt + 2 * border);
Run Code Online (Sandbox Code Playgroud)
我已经包含了算法标准头.当我鼠标移动到最大值时,我得到:
错误:期望标识符
并编译错误:
错误C2589 ::错误C2059
'('右侧的非法令牌'::'
:语法错误:'::'
怎么了?
ild*_*arn 62
由于您使用的是VC++,所以在任何#includes 之前都会出现这种情况:
#define NOMINMAX
Run Code Online (Sandbox Code Playgroud)
windows.h定义命名的宏min,max如下所示:
#define min(a,b) (((a) < (b)) ? (a) : (b))
#define max(a,b) (((a) > (b)) ? (a) : (b))
Run Code Online (Sandbox Code Playgroud)
自从C++标准化之前,Windows SDK已经包含了这些宏,但由于它们显然NOMINMAX会对C++标准库造成严重破坏,因此可以定义宏以防止它们被定义.
通常,如果您使用C++(而不是C)并包含windows.h,请始终NOMINMAX先定义.
Dav*_*e S 17
如果您使用的是VC++,则可以#define NOMINMAX先包含任何标题,也可以使用(std::max)(myInt + 2 * border, myOtherInt + 2 * border)
| 归档时间: |
|
| 查看次数: |
23008 次 |
| 最近记录: |