deadhunter124 2018-11-09 01:10 采纳率: 100%
浏览 1333

VS 2010 中为什么总时提是floor函数未定义?

图片说明

如图,同样的代码,在同样的开发环境写的,在手机端C++ APP 中代码完全可行,在PC端庄的VS 2010中运行就总是提是上图的信息,告诉我floor函数调用不明确,已经在头文件中声明了,但还是这个样子,求高手解答,是我安装时出现的问题还是其他什么问题?PC端的操作系统是win 10

  • 写回答

1条回答 默认 最新

  • 内核之道 PostgreSQL领域优质创作者 2018-11-09 01:25
    关注
    首先,从编译报错信息看,不是函数没声明问题。应该是你的函数重载定义有问题,从而产生歧义,才导致调用函数时候报错“重载调用不明确”。这样对于不同平台或不同的编译器可能其效果是
    不一样的。因为它们在兼容多数规则的同时也会持有自身的一些特性。这样就导致你在手机端APP中可以,而vs中不行。记住函数重载的几个原则:
    
    (1).函数名需相同。 
    (2).参数的个数、参数的顺序和参数的类型不同均可构成重载。 
    (3).返回值类型不同不能构成重载。
    特别是(2)、(3)点很重要,你再检查下你的函数重载定义是否满足上面条件。
    
    

    其次,floor是c语言的一个库函数,其功能是:其功能是“向下取整”,或者说“向下舍入”。特别重要的一点是,程序中自定义的函数名、变量名等不要与c中的关键字或是函数库名字一样,这是很不好的代码风格,也不满足编程规范。也有可能是这个
    产生的报错。若检测了前面的几个原则,都没有问题时候,则重新定义下函数名。即可。
    若有帮助,还望楼主采纳!!!谢谢。。。。


    楼主,我的“帖子回复功能不能使用,只有在这里回答你刚才的问题。”

    你需要包含头文件

    #include  <math.h>
    

    就可以使用了,floor包含在该头文件中。


    floor的函数原型是:

     double floor(double x);
    
    

    因此若要转为int类型,有的平台会警告waring,有的则直接报错,需要强制转换,因为会损失精度。

    望采纳!!!!

    评论

报告相同问题?

悬赏问题

  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站