做java的,问一个C++语法问题,是在搞不懂。。

disalong 2014-05-08 11:56:52
项目经理扔过来一个c++的demo,本人一窍不通,一心只弄java,无奈任务还是要完成的,然后搭了一下环境,看了一些最基础的语法,但确实很无奈,项目组没有一个人懂c++,好了,现在最基础的语法都没弄明白,所以程序编译都通不过,请各位帮帮忙:


我在main方法中调用一个重载的函数,却始终调不到:



这个函数是在"FSECOMM.h"头文件里面的,它还有一个没有参数的重载函数,而我上图中的确传了四个参数,应该是调用有参数的哪个FseInit()方法才对呀,但始终调的是没有参数的FseInit()方法,所以报“too many arguments to function ...”的错:



请问是我调用FseInit()方法时传的参数的类型不正确才导致重载不成功的吗,还是其他原因?
...全文
259 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ForestDB 2014-05-08
  • 打赏
  • 举报
回复
明显这里有个宏定义,实际上走到的是else分支。
赵4老师 2014-05-08
  • 打赏
  • 举报
回复
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。gcc加-E
idzeta 2014-05-08
  • 打赏
  • 举报
回复
我注意到第267行有句#else,那么在你想要的ANSI原型四参数FseInit之前会不会有一句当前条件为假的#if defined(SOME_THING) 之类的预处理语句?
#if 条件         // 如果条件为假,从这句后直到下个最近的#else、#elif、##endif前的全都消除
...
四参数FseInit(); // 第197行
...
#else            // 第267行
...
无参数FseInit(); // 第270行
...
#endif
如果是这种情况,让#if条件为真即可……
kivien 2014-05-08
  • 打赏
  • 举报
回复
把(int)0的(int)去掉试试吧,我也蒙了
「已注销」 2014-05-08
  • 打赏
  • 举报
回复
引用 1 楼 u012565501 的回复:
是的,它都说是太多参数 了

和你定义的函数对不上


哪个地方对不上呢?我是在文档中copy过来的例子,"FSECOMM.h"头文件中的这两个重载的函数是这样定义的:





回答我吧,马上给分的。。。。。
kivien 2014-05-08
  • 打赏
  • 举报
回复
是的,它都说是太多参数 了 和你定义的函数对不上
幻夢之葉 2014-05-08
  • 打赏
  • 举报
回复
原本接口就定义你当前环境应该调用无参那个函数! 所以你还是用无参的替代(如果可行的话) 或者你也像他定义的一样 条件编译,分别调用有参和无参的版本!
「已注销」 2014-05-08
  • 打赏
  • 举报
回复
引用 11 楼 Adol1111 的回复:
比如#define STIL_ANSI 1
是的,这个问题已经解决了,结贴了,能不能再帮忙看看这个问题 http://bbs.csdn.net/topics/390780478
Adol1111 2014-05-08
  • 打赏
  • 举报
回复
比如#define STIL_ANSI 1
Adol1111 2014-05-08
  • 打赏
  • 举报
回复
#if #else已经说明了有两个版本了,你没有进入多参数的版本,编译时当然报错了。 你只要定义STIL_ANSI为真即可
Hi-Lu 2014-05-08
  • 打赏
  • 举报
回复
根据报错的信息,你程序调用的肯定是不带参的FseInit函数,要不然不会报错说你传了过分多的参数,所以肯定是跟#if #else这样的宏定义有关,它们限制了你调用重载函数时选的是哪一个,所以你再检查一下。
「已注销」 2014-05-08
  • 打赏
  • 举报
回复
引用 4 楼 idzeta 的回复:
我注意到第267行有句#else,那么在你想要的ANSI原型四参数FseInit之前会不会有一句当前条件为假的#if defined(SOME_THING) 之类的预处理语句?
#if 条件         // 如果条件为假,从这句后直到下个最近的#else、#elif、##endif前的全都消除
...
四参数FseInit(); // 第197行
...
#else // 第267行
...
无参数FseInit(); // 第270行
...
#endif

如果是这种情况,让#if条件为真即可……






SKATE11 2014-05-08
  • 打赏
  • 举报
回复
引用 6 楼 ForestDB 的回复:
明显这里有个宏定义,实际上走到的是else分支。
这个有道理 楼主就看这 条件编译

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧