6656|15

69

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

头文件MATH.H包含问题 [复制链接]

/*--------------------------------------------------------------------------
MATH.H

Prototypes for mathematic functions.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/

#ifndef __MATH_H__
#define __MATH_H__

#pragma SAVE
#pragma REGPARMS
extern char  cabs  (char  val);
extern int    abs  (int   val);
extern long  labs  (long  val);
extern float fabs  (float val);
extern float sqrt  (float val);
extern float exp   (float val);
extern float log   (float val);
extern float log10 (float val);
extern float sin   (float val);
extern float cos   (float val);
extern float tan   (float val);
extern float asin  (float val);
extern float acos  (float val);
extern float atan  (float val);
extern float sinh  (float val);
extern float cosh  (float val);
extern float tanh  (float val);
extern float atan2 (float y, float x);

extern float ceil  (float val);
extern float floor (float val);
extern float modf  (float val, float *n);
extern float fmod  (float x, float y);
extern float pow   (float x, float y);

#pragma RESTORE

#endif
头文件MATH.H包含问题,请问我把MATH.H头文件包含后,但是没有包含MATH.H中函数的实现文件,例如MATH.C文件,是不是就可以调用MATH.H头文件中定义的函数了?这是什么道理呢?

最新回复

一定要包含库  详情 回复 发表于 2008-4-23 22:42
点赞 关注

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
因为你的开发环境lib路径中包含了该.h对应的lib库

如果没有包含需要人为去指定
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
extern就说明,在这里这些函数并不是第一次被声明,在别的地方肯定会有具体定义。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
因为你的开发环境lib路径中包含了该.h对应的lib库

如果没有包含需要人为去指定,
我的意思是我在编写源程序的过程中
不需要将MATH.H对应的实现文件,比如是MATH.C 将它包含进来吗?

extern就说明,在这里这些函数并不是第一次被声明,在别的地方肯定会有具体定义。
我的意思是:在别的地方肯定会有具体定义,但是就是这个别的地方,我在编写源程序的过程中并
未将它包含进来。


 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
请各路高手指点一下。
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

6
 
这个.LIB文件在哪里能找到呢?一定要将.LIB文件添加到工程所在的文件夹吗?请教高手。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

7
 
...\Keil\C51\INC\下的*.H文件中声明的函数,绝大多数都是C语言库函数和编译器库函数,对应的实现代码在...\Keil\C51\LIB\下的*.lib文件中(通常我们看不到它们的源码),在连接的时候,连接器自然知道到这里来找它们的实现,所以不需要将.lib文件添加到工程中去,只需在你的需要调用库函数的.C文件头部包含对应的.H声明要调用这些库函数就可以了。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
例外的是C语言中的动态内存分配函数(malloc/calloc/realloc/free),它们的实现代码是以.C的形式提供的(在...\Keil\C51\LIB\文件夹下),需要程序员自己手工把它们复制到工程所在文件夹中并添加进工程。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
#include
真正的函数实现细节可能封装在 .lib或者 .dll(windows程序)
有时候可能 *.lib并不会被链接到。还要添加:
#pragma comment (lib, "*.lib")
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
没有库函数不能实现,一定要包含库。
 
 
 

回复

47

帖子

0

TA的资源

一粒金砂(初级)

11
 
一定要包含库
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

12
 
一定要包含库
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

13
 
一定要包含库
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

14
 
一定要包含库
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

15
 
一定要包含库
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

16
 
一定要包含库
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表