1: #include <windows.h>
2: int& max(int& a, int& b)
3: {
4: return a > b ? a : b;
5: }
6: int main()
7: {
8: return 0;
9: }
Visual Studio 2008 Express 版喊道:
1>e:...\main.cpp(2) : 错误 C2062: 类型“int”意外
1>e:...\main.cpp(2) : 错误 C2062: 类型“int”意外
1>e:...\main.cpp(2):错误 C2059:语法错误:')'
1>e:...\main.cpp(3) : 错误 C2143: 语法错误 : 缺少 ';'在“{”之前
1>e:...\main.cpp(3) : 错误 C2447: '{' : 缺少函数头(旧式正式列表?)
如果我用 stdio.h 或 iostream 替换 windows.h (或者删除它),它似乎可以工作
这是为什么?
最佳答案
#include <windows.h>
#undef min
#undef max
int & max(int& a, int& b)
{
return a > b ? a : b;
}
int main()
{
return 0;
}
<windows.h>
定义 max
的宏和min
这会干扰你的。
其他方式
重命名您的函数。
使用
NOMINMAX
。这是建议使用一些自行定义最小值和最大值的 STL header 的常见解决方案。#define NOMINMAX #include <windows.h>
关于c++ - 返回引用的函数不适用于 window.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16133265/