首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数返回引用不适用于window.h

函数返回引用不适用于window.h
EN

Stack Overflow用户
提问于 2013-04-22 00:12:56
回答 1查看 193关注 0票数 2
代码语言:javascript
复制
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>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 (或者如果我删除它),它似乎可以工作。

为什么会这样呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-22 00:20:25

代码语言:javascript
复制
#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标头的常见解决方案,这些标头定义了min和max。

#define NOMINMAX #include

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16133265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档