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)解决的
2 个月之前 回复
deadhunter124
deadhunter124 那么请问在VS2010中向下取整的函数是什么呢?我查了一下,好像软件定义的就是floor函数
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
引用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
Linux下math库函数编译时未定义的解决办法
Linux下math库函数编译时未定义的解决办法_Linux教程_Linux公社-Linux系统门户网站 http://www.linuxidc.com/Linux/2012-03/57418.htm 在Ubuntu上做C语言程序练习时,用到了sqrt函数,尽管在源文件中已包含了math.h头文件,但在编译的时候总是提示sqrt未定义。后来在网上查阅了相关资料,得知:在Linux系统下
VS2015提示gets未定义
出现这种情况的一般原因是, VS2015使用的是新C标准,也就是C11,而VC6.0用的是老标准。 在新标准中,应该是用gets_s代替gets gets_s的具体用法是: gets_s(char *buff,size)  ...
错误: 很多未定义标识符错误 vc2010 ——解决方法
错误: 很多未定义标识符错误 vc2010 描述:项目-->配置属性-->C/C++-->常规-->附加包含目录:添加 $(ProjectDir)
floor 函数的返回值是 double型的!!!
潜意识一直认为floor函数的返回值是int型整数,猛然才发现--潜意识是错的 有这么一道简单的题: 计算球体积 时间限制:3000 ms  |  内存限制:65535 KB 难度:1 描述 根据输入的半径值,计算球的体积。 输入
vs2010找不到snprintf标识符
编译环境为vs2010, 在vs2010中调用snprintf,代码如下: snprintf(buf, sizeof(buf), "%d, %d", int1, int2); 在vs2010中编译,报告如下错误:  error C3861: “snprintf”: 找不到标识符 因为snprintf并不是C/C++中定义的标准函数,所以在许多编译器中,厂商提供了其相应的版本,
vs中能编译通过,但是会有红色下划线提示未定义标示符问题
项目能编译通过,但是代码中会有红色下划线提示未定义标示符。就连BOOL TRUE FALSE等都会有下划线。 这通常是该代码文件包含在项目文件夹的子文件夹中。 解决办法是配置包含项目目录即可: 打开项目属性-》配置属性-》C/C++常规-》附加包含目录-》填入:$(ProjectDir)
vs2010中的c语言sqrt编译不通过
程序源代码: #include #include "math.h" int main() {    int x, y;    for(int i=1; i        x = sqrt(i + 100);        y = sqrt(i + 268);        if(x*x==(i+100)&&y*y==(i+268)){            printf("
解决方法:vs2010+opencv不能正确使用imread()和imshow()函数
一、正确使用imread()和imshow()函数的前提是:保证 在debug模式下,项目的properties->configurations properties->linker->input->additional dependencies中的lib库都是xxxd.lib, 而在release模式下,lib库都是xxx.lib,上图 二、为什么有时候会出现下面的
VS中未定义标识符 system
  添加#include &amp;lt;&quot;stdlib.h&quot;&amp;gt;即可。  注 return 0; 须在最后。
vs2013 c++ 引用头文件后出现未定义或者重定义
未定义 #include "stdafx.h"必须要放在所有引用文件的最前面 #include "########.h" #include "########.h" 重定义; 1、在出现重定义错误的头文件加上: #ifndef FileName_H_//文件最前面 #define FileName_H_ //内容 #endif    //文件末尾 2、在出现重定义错误
java中round()函数,floor()函数,ceil()函数的返回值
不太熟悉的是round()函数的一些边缘值,比如Math.round(11.5)是多少,所以测试了一下。当前,之前对于向上取整和向下取整也有误解地方,一直以为返回数字应该为int类型,但是看了源码才知道返回值是double类型。 测试代码: /** * created by cxh on 17/7/27 */ public class TempTest { public sta
Linux应用开发———已经添加了C函数对应的头文件,还是提示找不到那个函数
提示找不到函数pow和floor的定义,这两个函数是c语言的库函数,头文件是math.h。     已经在程序中添加了该头文件,但还是提示找不到。     百度到:     最后,加上了-lm就可以了:
vs2015,cout提示是未定义标识符
添加 “using namespace std;” 或者这样使用cout、endl 在前面加上std::cout、std::endl #include using namespace std; int main () { std::cout <<"hello,world"<<std::endl; } 这是为什么呢? 标准C++的库函数、类日益增多,那么在这个大前提下谁能保证名字不会重复
vs2012下编译别人的项目时,明明有头文件且xxx.cpp中包含的头文件,却还提示xxx是未标识符,error C2065
一大早起来,从网上下载了一个cocos2d-x游戏--三消类游戏Sushi Crush源码,看到网上运行效果的截图,觉得这源码很有学习的必要。 于是,我就用vs2012打开win32下的sln,编译却提示“c:\users\end\desktop\sushicrush-master\classes\play-layer.cpp(22): error  C2065: “m_srcSushi”: 未
关于数据库ceil()函数,floor()函数,round()函数和trunc()函数
1,trunc()函数 trunc返回处理后的数值,其工作机制与round()函数极为类似,只是该函数不对指定小数前或后的部分做相应的舍入选择处理,而统统截取.其具体的语法格式:TRUNC(number[,decimals])其中: number 待处理的数值 decimals 指明需保留小数点后面的位数。可选项,忽略它则截取所有的小数部分。 select
vs2010 加入 CString a;的时候提示“CString”未声明标识符.
奇怪,难道时我缺少头文件吗,加了#include&amp;lt;Cstring&amp;gt;也不行,还有 #include&amp;lt;afx.h&amp;gt;......偶然的机会再往上看到了一个回答,1. 加入 #include &amp;lt;atlstr.h&amp;gt;2. 将如下的ATl从  “不使用”改为 “动态连接到ATL&quot; ;        //因为我是创建动态库,所以就选择了。但是之后我又将头文件和 改选项回复到之前...
post方法发送数据时表单元素报错未定义
用下面一行代码来给表单数据进行编码就能解决问题。(表单默认的编码就是这样)
VS提示_Error:未定义标识符“malloc”
加上头文件 #include &quot;malloc.h&quot; OK!
C++中的floor()函数
y = floor(x)。 则y等于:不大于x的最大整数。详细参考:http://www.cplusplus.com/reference/cmath/floor/
vs2010 标识可以右键转到定义,但是编译时提示未声明的标识符
问题描述:使用了pugixml库,包含了头文件。编译时显示xml_document  xml_node等为未声明的标识符,但是可以声明F12可以转到定义。 问题原因:未使用 pugi:: 命名空间 解决方法:使用 pugi::xml_document  pugi::xml_node,或在文件前加上using namespace pugi;
在用floor(XXX+0.5)做四舍五入时候发生的问题
在做C++primer第五版,第3.20题. 读入一组整数并把他们存入一个vector对象,要求输出 第一个和最后 一个元素 的和,接着输出第二个和倒数第二个元素的和,依此类推。 代码如下:#include "iostream" #include "vector" #include "cmath" using std::vector; using std::cin; using std::co
Floor()函数用法及含义
<br />      在关于测量gap的时候,如果measGapConfig被设置为“setup”,则UE按照收到的gapOffset,建立measGapConfig指示的测量gap的配置,<br />       SFN mod T = FLOOR(gapOffset / 10)<br />       subframe = gapOffset mod 10<br />       T = TGRP / 10<br />      <br /> <br />   若measGapConfig被设置为"r
Liunx下解决动态链接库符号未定义问题
Liunx下解决动态链接库符号未定义问题标签(空格分隔): 技术nm作用 列出二进制程序中的负号的值,符号类型和符号名称等 用法 -A 显示对象文件名称 -C 显示程序中的原始名称 -D 打印动态负号 -u 打印那些未定义的符号 符号类型 符号类型 涵义 A 该符号的值在以后的链接中不再改变 B 未初始化的全局变量 D 初始化的全局变量 T 表示全局非静态函
VS2013开发QT时提示很多未定义标识符(不影响编译)
类似这种红色po浪线。 有人说完全编译就行了,但我试了不行。 好了
Visual Studio 调试(Dubug)模式下的“未定义标识符”
【问题】使用VS调试程序时,无法查看变量值。为该变量添加监视,则显示为“未定义标识符”。 【问题原因】在Debug模式下选择了代码优化选项,因此在运行过程中,部分变量被编译器通过优化省略了。 【解决方案】项目属性》C/C++》优化》优化:选择“已禁用(/Od)” 【参考资料】 http://ask.csdn.net/questions/24239
C++中ceil、floor和round的区别
Math类中提供了三个与取整有关的方法:ceil,floor,round,这些方法的作用于它们的英文名称的含义相对应1、ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11;2、floor的英文是地板,该方法就表示向下取整,Math.floor(11.6)的结果是11,Math.floor(-11.4)的结果-...
已定义的方法和变量,在vs 编译的时候提示未声明。
在vs2012中点击方法跳转可以到对应的.h文件中。但是一旦编译就直接error,提示未声明的变量或者方法。 经过查询发现是因为添加的这些方法是在xcode中写的,虽然在vs2012中能看见正确的方法,但是实际上两者的编码格式不一致导致编译器无法正确识别。解决方法是将其保存成txt文本文件去掉编码格式,再拷贝到对应的cpp和.h文件。...
在VS2010中出现 error C3861: “snprintf”: 找不到标识符
snprintf()函数的格式跟printf差不多一样,是在c里面用的函数,包含在 #include 头文件中。 但snprintf()函数并不是标准c/c++中规定的函数,所以在许多编译器中,厂商提供了其相应的实现的版本。在gcc中,该函数名称就snprintf(),而在VS中称为_snprintf。 所以在需要使用snprintf()时改成_snprintf就可以了,或则在预编译处加入:
floor函数与ceil函数
 以下内容来自百度百科。 floor(x),有时候也写做Floor(x),其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数(与“四舍五入”不同,下取整是直接取按照数轴上最接近要求的值左边的值,也就是不大于要求的值的最大的那个)。 函数名: ceil 用 法: double ceil(double x); 功 能: 返回大于或者等于指定表达式的最小整数 头文件:mat
VS2010总是提示“此项目已过期”的一种原因
有时候,VS2010中的一个项目已经完全重新生成了,但调试时还是提示“此项目已过期”。此时可检查解决方案资源管理器中头文件目录中的头文件名称是否对应真实有效的实体头文件,如果没有对应,应在该目录中予以排除。否则因为项目实际不再使用这个过时的头文件名称,编译、链接不会报错,但调试时就会出现“此项目已过期”的提示。
sqrt()函数注意
观察如下判断素数的函数:int is_prime(int n) { assert(n>=0); //不满足时终止程序 int m; int flag=1; if(n==1) return 0; //1既不是素数也不是合数 m = floor(sqrt(n) + 0.5); //注意***** for(i
C++模板函数——VC6下通过,在VS2010下报错 error C2668
#include  using namespace std; template  T max(T a,T b) { return (a>b)?a:b; } int main() { cout cout cout return 0; } 这段代码 VC6 可以正常编译,但VS 2010 下提示如下错误: 1>TesT.cpp(13): err
vs2013 监视变量显示未定义标识符的问题
今天在使用VS2013调试工程的时候,对于有些变量,在使用watch的时候总是显示未定义标识符。可是明明已经定义的变量并且能够正确运行,为什么会出现未定义标识符的原因呢?后来在网上找了很久还找到一个正确的回答。现在把原因和解决方案给出来。 原因: vs2013在编译的时候采用了较快的编译模式,所以有些变量就显示未定义了。 解决方案: 项目-》属性-》c/c++-》优化-》改为禁用/OD 重
关于在<math.h>头文件中的floor()sqrt()
floor(x)表示不大于x的最大
VS2008中,PlaySound找不到标识符解决办法
首先必须在开头引入头文件#include 在解决方案中>>>>右击选择>>>>属性>>>>配置属性> >>>链接器>>>>输入>>>>附加依赖项中,写入winmm.lib,方可。
SQL 中详解round(),floor(),ceiling()函数的用法和区别?
应用中使用四舍五入的值,我和我的用户在报表应用中的计算问题存在分歧。所有的代码都在T-SQL中,但是我认为报表问题与数据类型和向下取整或向上取整规则关系密切。请问您有没有这方面的高见?我想看到一些带有不同编码选项的例子。    Examda提示:如果不理解基本的数据类型和四舍五入函数,那么你就可能误解四舍五入。由于数据类型的差异(比如integer,float, decimal等等),四舍五入后
PHP的floor函数问题。
最近在写一个有关金融的项目。里面涉及到好多资金小数的问题。有一次用到floor想实现向下取整精确到两位小数时,突然发现如下代码不正常了。 $money=271.28; echo $money=floor($money*pow(10,2))/100我惊讶的发现输出的竟然不是271.28而是271.27! 后来查了好多资料,在php官网上看到了这么一点: 浮点数的精度有限,以十进制能够精确表示的
vs2013提示malloc是未定义的标识符
问题如下: 解决: 加上#include "malloc.h" #include #include "malloc.h" typedef char ElemType; typedef struct BiNode{ ElemType data; struct BiNode *lchild; struct BiNode *rchild; }BiNode,*BiTre
文章热词 零系数解析总个数 VS插件ColorOutput VS插件LineCounter 线性回归目标函数推导 支持向量机对偶目标函数
相关热词 2010 c#版本 vs 2010 c++11 vs 2010和vs c++ visual 区块链提币费用 为什么学python