|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | 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 于 2005/8/28 12:05:00 发布:
还有 我在abc.h文件前面还写了#ifndef FFT_H ............................. ................................ #endif 在abc.c文件前写了#define FFT_H 编译main.c时的时候就出现我所说的问题. |
3楼: | >>参与讨论 |
作者: hiberhe 于 2005/8/28 12:19:00 发布:
你的ifndef用错了! 头文件应该这样写:(当然_ABC_H_这个符号就看个人习惯了) #ifndef _ABC_H_ #define _ABC_H_ // 这儿才头文件的内容 #endif 你在main.c中用define,而在头文件中用的是ifndef,如果你的define在include之前,当然就不可能包含头文件啦:) |
4楼: | >>参与讨论 |
作者: future_god 于 2005/8/28 14:11:00 发布:
谢谢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 于 2005/8/28 15:12:00 发布:
刚才computer00说abc.c中不要写#define _ABC_H 刚才computer00说abc.c中不要写#define _ABC_H 可是还是不行啊!! |
6楼: | >>参与讨论 |
作者: computer00 于 2005/9/4 23:50:00 发布:
你都先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 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |