头文件MATH.H包含问题

kobe0601   2008-4-9 09:15 楼主
/*--------------------------------------------------------------------------
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头文件中定义的函数了?这是什么道理呢?

回复评论 (15)

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

如果没有包含需要人为去指定
点赞  2008-4-9 09:25
extern就说明,在这里这些函数并不是第一次被声明,在别的地方肯定会有具体定义。
点赞  2008-4-9 09:42
因为你的开发环境lib路径中包含了该.h对应的lib库

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

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


点赞  2008-4-9 09:50
请各路高手指点一下。
点赞  2008-4-9 10:26
这个.LIB文件在哪里能找到呢?一定要将.LIB文件添加到工程所在的文件夹吗?请教高手。
点赞  2008-4-22 20:19
...\Keil\C51\INC\下的*.H文件中声明的函数,绝大多数都是C语言库函数和编译器库函数,对应的实现代码在...\Keil\C51\LIB\下的*.lib文件中(通常我们看不到它们的源码),在连接的时候,连接器自然知道到这里来找它们的实现,所以不需要将.lib文件添加到工程中去,只需在你的需要调用库函数的.C文件头部包含对应的.H声明要调用这些库函数就可以了。
点赞  2008-4-23 18:08
例外的是C语言中的动态内存分配函数(malloc/calloc/realloc/free),它们的实现代码是以.C的形式提供的(在...\Keil\C51\LIB\文件夹下),需要程序员自己手工把它们复制到工程所在文件夹中并添加进工程。
点赞  2008-4-23 18:11
#include
真正的函数实现细节可能封装在 .lib或者 .dll(windows程序)
有时候可能 *.lib并不会被链接到。还要添加:
#pragma comment (lib, "*.lib")
点赞  2008-4-23 20:08
没有库函数不能实现,一定要包含库。
点赞  2008-4-23 22:36
一定要包含库
点赞  2008-4-23 22:37
一定要包含库
点赞  2008-4-23 22:37
一定要包含库
点赞  2008-4-23 22:37
一定要包含库
点赞  2008-4-23 22:37
一定要包含库
点赞  2008-4-23 22:41
一定要包含库
点赞  2008-4-23 22:42
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复