【发布时间】:2012-11-05 04:02:20
【问题描述】:
我最近添加了:
#define NOMINMAX
#include <Windows.h>
#include <algorithm>
到我的 main.cpp 以便使用
std::max( x , x ); // x is just a placeholder and not actual anything
std::min( x , x );
但我不能在其他文件中使用std::max()/std::min()。
error C2589: '(' : illegal token on right side of '::'
error C2059: syntax error : '::'
我尝试在我的其他文件中添加#define NOMINMAX,但失败了。线索是什么?
问之前看了一圈,没看懂答案Possible problems with NOMINMAX on Visual C++
【问题讨论】:
-
任何包含
windows.h并使用算法版本的内容,如果尚未定义,则应在包含之前定义。 -
为什么不把代码贴在它不工作的文件上,而不是把代码贴在它工作的文件上!真的,除非您发布,否则我们看不到您的代码。
-
而且您确定那些 “其他文件” 不包括
<windows.h>并且之前没有定义NOMINMAX(可能是通过其他一些标头间接地)? -
@john,这是一个 5 行帧计时器代码,没什么特别的。谢谢
-
特别说明;值得注意的是,您可以在
#include <Windows.h>之后使用#undef NOMINMAX。这将减少很多混乱。#define WIN32_LEAN_AND_MEAN相同。#define NOMINMAX以一种有趣的方式充当 Windows.h 的“论据”。#undef NOMINMAX就像事后清理堆栈一样,以一种有趣的方式。未来包括始终通过不发送垃圾邮件警告来感谢您。
标签: c++ visual-studio winapi