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

图片说明

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

-1

1个回答

首先,从编译报错信息看,不是函数没声明问题。应该是你的函数重载定义有问题,从而产生歧义,才导致调用函数时候报错“重载调用不明确”。这样对于不同平台或不同的编译器可能其效果是
不一样的。因为它们在兼容多数规则的同时也会持有自身的一些特性。这样就导致你在手机端APP中可以,而vs中不行。记住函数重载的几个原则:

(1).函数名需相同。 
(2).参数的个数、参数的顺序和参数的类型不同均可构成重载。 
(3).返回值类型不同不能构成重载。
特别是(2)、(3)点很重要,你再检查下你的函数重载定义是否满足上面条件。

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


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

你需要包含头文件

#include  <math.h>

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


floor的函数原型是:

 double floor(double x);

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

望采纳!!!!

0
deadhunter124
deadhunter124 我的头文件中包含了#include <math.h>这个文件,最后通过强制类型转换(int)解决的
10 天之前 回复
deadhunter124
deadhunter124 那么请问在VS2010中向下取整的函数是什么呢?我查了一下,好像软件定义的就是floor函数
10 天之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
引用math.h的时候,数学函数报错为未定义的符号
undefined reference to `log10' undefined reference to `floor'  undefined reference to `pow‘ 搜了一下,原来是在编译的是没有没有引用数学函数的函数库导致的,在gcc yoursourcefile.c 的时候加上' -lm' 就好了 "gcc -lm yoursourcefile.c" 编译通过 参考:
vs2010 未定义的标识符“round”
今天,在vs2010里使用round()函数进行四舍五入,添加了#include 头文件,还报错: “round”: 找不到标识符。 进math.h文件查看,原来vs2010的math里没有round,ceil()和floor()都有: 要使用的话,自己添加一个: double round(double r) { return (r > 0.0) ? floo
vs2013 监视变量显示未定义标识符的问题
今天在使用VS2013调试工程的时候,对于有些变量,在使用watch的时候总是显示未定义标识符。可是明明已经定义的变量并且能够正确运行,为什么会出现未定义标识符的原因呢?后来在网上找了很久还找到一个正确的回答。现在把原因和解决方案给出来。 原因: vs2013在编译的时候采用了较快的编译模式,所以有些变量就显示未定义了。 解决方案: 项目-》属性-》c/c++-》优化-》改为禁用/OD 重
明明没有错 怎么会说未定义,python
def OpenPrice(priceSequence): Open=priceSequence[0] return (Open) def ClosePrice(pricesequence): #Close=priceSequence[-1] Close=priceSequence[-1] return(Close) def HighPrice(price...
【GCC调试程序C语言问题】对‘ceil’未定义的引用/已经包含头文件仍然提示未定义的引用
ceil()是#include 中的函数,虽然程序中已经包含了该头文件,但是编译的时候还是说这个函数没有定义(也就是"对ceil未定义的引用) 需要重新编译,并在最后加上"-lm"
floor 函数的返回值是 double型的!!!
潜意识一直认为floor函数的返回值是int型整数,猛然才发现--潜意识是错的 有这么一道简单的题: 计算球体积 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 根据输入的半径值,计算球的体积。 输入
VS2008 中右键“转到定义”弹出“未定义符号” 的解决办法。
VS2008 中右键“转到定义”弹出“未定义符号” 的解决办法。   先关掉工程,把工程目录里的 .ncb 格式的文件删掉,再重新打开工程就OK了,据说是个BUG。
在用floor(XXX+0.5)做四舍五入时候发生的问题
在做C++primer第五版,第3.20题. 读入一组整数并把他们存入一个vector对象,要求输出 第一个和最后 一个元素 的和,接着输出第二个和倒数第二个元素的和,依此类推。 代码如下:#include "iostream" #include "vector" #include "cmath" using std::vector; using std::cin; using std::co
vs2013 c++ 引用头文件后出现未定义或者重定义
未定义 #include "stdafx.h"必须要放在所有引用文件的最前面 #include "########.h" #include "########.h" 重定义; 1、在出现重定义错误的头文件加上: #ifndef FileName_H_//文件最前面 #define FileName_H_ //内容 #endif    //文件末尾 2、在出现重定义错误
vs2010 标识可以右键转到定义,但是编译时提示未声明的标识符
问题描述:使用了pugixml库,包含了头文件。编译时显示xml_document  xml_node等为未声明的标识符,但是可以声明F12可以转到定义。 问题原因:未使用 pugi:: 命名空间 解决方法:使用 pugi::xml_document  pugi::xml_node,或在文件前加上using namespace pugi;