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速成版大喊:
1&gt; e:... \ main.cpp(2):错误C2062:输入'int'意外
1&gt; e:... \ main.cpp(2):错误C2062:输入'int'意外
1&gt; e:... \ main.cpp(2):错误C2059:语法错误:')'
1&gt; e:... \ main.cpp(3):错误C2143:语法错误:缺少';'在'{'
之前1&gt; e:... \ main.cpp(3):错误C2447:'{':缺少函数头(旧式正式列表?)
如果我用stdio.h或iostream替换windows.h(或者如果我删除它)似乎有用
为什么会这样?
答案 0 :(得分:5)
#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头的常见解决方案。
#define NOMINMAX
#include <windows.h>