【发布时间】:2013-04-21 16:12:56
【问题描述】:
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) : error C2062: type 'int' unexpected
1>e:...\main.cpp(2) : error C2062: type 'int' unexpected
1>e:...\main.cpp(2) : 错误 C2059: 语法错误: ')'
1>e:...\main.cpp(3) : 错误 C2143: 语法错误: 缺少 ';'在'{'之前
1>e:...\main.cpp(3) : 错误 C2447: '{' : 缺少函数头(旧式正式列表?)
如果我将 windows.h 替换为 stdio.h 或 iostream(或者如果我删除它),它似乎可以工作
这是为什么?
【问题讨论】:
-
我猜你的
windows.h不知何故损坏了。您是否碰巧在文本编辑器中打开它以查看其中的内容?您可能误编辑了它。 -
windows.h 有 min 和 max 宏。
-
在此处返回引用时要非常小心 - 在 99% 的情况下,这不是您想要的(例如,对于您的代码,这将不起作用:
max(4, 5))。不要害怕按值返回,它是高效的,并且会避免不必要的复制。
标签: c++ visual-studio function reference