函数返回引用不与window.h一起使用

时间:2013-04-21 16:12:56

标签: c++ visual-studio function reference

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(或者如果我删除它)似乎有用

为什么会这样?

1 个答案:

答案 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>定义了maxmin的宏,这些宏会干扰您的。

其他方式

  • 重命名您的功能。

  • 使用NOMINMAX。这是推荐使用一些自定义最小值和最大值的STL头的常见解决方案。

    #define NOMINMAX
    #include <windows.h>