2
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 Edition 喊道:

1>e:...\main.cpp(2) : 错误 C2062: type 'int' unexpected

1>e:...\main.cpp(2) : 错误 C2062: type 'int' unexpected

1>e:...\main.cpp(2) : 错误 C2059: 语法错误: ')'

1>e:...\main.cpp(3) : 错误 C2143: 语法错误: 缺少 ';' 前 '{'

1>e:...\main.cpp(3) : 错误 C2447: '{' : 缺少函数头(旧式正式列表?)

如果我用 stdio.h 或 iostream 替换 windows.h 似乎有效(或者如果我删除它)

为什么是这样?

4

1 回答 1

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>
    
于 2013-04-21T16:20:24.900 回答