登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

请问一个头文件的包含问题

作者:future_god 栏目:嵌入式系统
请问一个头文件的包含问题
我在abc.h中定义了申明了函数的原型
在abc.c中写了函数的实现并且#include "abc.h"
在main.c中#include "abc.h",但是编译时总会出现
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  _FFT
    MODULE:  main.obj (MAIN)
但是函数的实现就在abc.c中啊.是不是应该把abc.c也要
加入工程呢?
我用的是keil c .
希望高手指点一下.谢谢!! 

2楼: >>参与讨论
future_god
还有
我在abc.h文件前面还写了#ifndef FFT_H
.............................
................................
                       #endif
在abc.c文件前写了#define FFT_H
编译main.c时的时候就出现我所说的问题.



3楼: >>参与讨论
hiberhe
你的ifndef用错了!
头文件应该这样写:(当然_ABC_H_这个符号就看个人习惯了)
#ifndef _ABC_H_
#define _ABC_H_

// 这儿才头文件的内容

#endif

你在main.c中用define,而在头文件中用的是ifndef,如果你的define在include之前,当然就不可能包含头文件啦:)

4楼: >>参与讨论
future_god
谢谢hiberhe兄的解答!!可是还有问题....
现在的写法是
/**abc.h*/
#ifndef _ABC_H_
#define _ABC_H_

// 这儿是头文件的内容

#endif


/**abc.c**/

#include    <math.h>
#include    "abc.h"

#define _ABC_H_

//下面是abc.h中申明的函数的实现
....................
...................



/**main.c**/
#include "abc.h"
#include 其他文件


但是这样写还是有我说到的错误..很迷惑.....啊




5楼: >>参与讨论
future_god
刚才computer00说abc.c中不要写#define _ABC_H
刚才computer00说abc.c中不要写#define _ABC_H
可是还是不行啊!!


6楼: >>参与讨论
computer00
你都先define了,再include,后边的就不编译了,相当于没include
现在的写法是
/**abc.h*/
#ifndef _ABC_H_
#define _ABC_H_

// 这儿是头文件的内容

#endif


/**abc.c**/

#include    <math.h>
#include    "abc.h"

#define _ABC_H_

//下面是abc.h中申明的函数的实现
....................
...................



/**main.c**/
#include "abc.h"
#include 其他文件


你在abc.c中使用了#define _ABC_H_,然后再#include "abc.h",这
样,abc.h中的#ifndef _ABC_H_就变得不成立了,自然后面的就不会
被编译,编译器当然会说未定义了。

* - 本贴最后修改时间:2005-9-4 23:51:27 修改者:computer00

参与讨论
昵称:
讨论内容:
 
 
相关帖子
请问高手 怎样修改wince 的显示分辨率?
我想把 ARM 44B0 开发板改为ROM 模拟,哪位大虾给点意建
100个最佳linux站点,请参考!(转贴)
请问你们在用C51编程的时候一般用的是什么编译软件?
有人用RABBIT2000吗?谁有UCOS2.LIB(能用)扶贫一个,用于学习.
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号