免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1659 | 回复: 4
打印 上一主题 下一主题

[C++] .../c++/3.3.2/limits:206:22:macro "max" requir 2 a [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-17 11:37 |只看该作者 |倒序浏览
本人有一个基类库,在rh 7.3下编译和使用都很正常,但在rh 9.0只编译就不行了.
其中主要的问题是fstream类中open函数的参数类型问题,在7.3中,我用的函数原型为:
void open ( const char * filename, int mode);
这种用户在7.3的库中编译是可以的,但在9中编译不过,所以我将它改成了:
void open ( const char * filename, fstream:penmode mode );
这样本程序库也可以编译成功,并作了简单测试也是OK的.

但是,本人将此基类库用到其它程序中时,在编译的过程中,就出现了很多错误,错误的最终关联的文件提示如下:
/usr/local/include/c++/3.3.2/limits:206:22:macro "max" requires 2 arguments, but only 1 given

本人网上找了很久并找到了一个相同的问题贴子(http://forum.aspseek.org/index.php?t=msg&goto=3003&#msg_3003),但也找到相关的解决方法,我想可能是不同类库版本的问题,请高手指教!

论坛徽章:
0
2 [报告]
发表于 2004-05-18 10:19 |只看该作者

.../c++/3.3.2/limits:206:22:macro "max" requir 2 a

up

论坛徽章:
0
3 [报告]
发表于 2004-05-18 11:02 |只看该作者

.../c++/3.3.2/limits:206:22:macro "max" requir 2 a

怎么没人知道呢???

论坛徽章:
0
4 [报告]
发表于 2004-05-20 11:29 |只看该作者

.../c++/3.3.2/limits:206:22:macro "max" requir 2 a

顶上去!!!

论坛徽章:
0
5 [报告]
发表于 2004-05-21 11:29 |只看该作者

.../c++/3.3.2/limits:206:22:macro "max" requir 2 a

主要的原因是你使用的 C++编译器遵从的 C++标准差异较大造成的。rh 7.3下的GCC编译器一般是2.9.x版,rh 9.0下是3.3.2版。一般来说以3.0版为界限,在此以前的版本对标准的支持非常弱,在此以后的版本对标准的支持越来越好,相应地对按照非标准写的程序的支持也越来越差。

C++标准在以前C++的基础上做了较大的改进,增添了许多内容。与你的问题相关的一个内容就是引入了 namespace的概念。虽然你没有提供代码不好确定具体原因,单从错误信息来看,好像是你程序中的max与标准库 std中的max发生了冲突。如果是这种情况的话,在你的程序中不要直接使用 using namespace std;,这样会把域名空间std中的所有名子都引入到程序中来,容易与你程序中的同名名子发生冲突。使用 using std:xx这种形式把std中的 xxx引入到程序中使用。比如,如果想使用std中的cout,可以在程序的前面这样声明:using std::cout;。这样只引进标准库中需要使用的名子。

还有一个简单的解决办法就是:在你熟练掌握C++标准之前,仍然可以使用标准以前的方式编写程序,并且在编译程序的时候仍然用以前版本的编译器。你只要安装一个 2.9.x的GCC编译器即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP