微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 如何在KEIL中编写模块化的C程序

如何在KEIL中编写模块化的C程序

时间:11-30 来源:互联网 点击:

keil中自己编写C语言头文件

技术相关 2010-03-11 20:57:05 阅读626 评论0 字号:大中小 订阅

一直希望自己编写一个C语言头文件,把自己常用的一些函数放进去。上网看了很多文章,我所看到文章做法和一般C语言头文件写法基本一样,自己学着试了一下,老是不成功。后来去图书馆查书,才知道原来keil的C语言比较特别,引用同一工程其他文件中的函数需要在声明函数前加extern。

以下是一个例子:

//步骤一:建立fc.h

#ifndef FC_H
#define FC_H
#include
extern void f(void)
#endif

//步骤二:建立fc.c

#include "fc.h"
#include
//还需要什么头文件自己添加
void f(void)
{
//要什么程序自己添加
}

步骤三:将f.h和f.c放在工程的文件夹里,并在keil中将f.c添加到工程中(右键左边的Source Group n,选择Add file to groupSource group n),要用到f()函数的话就include“fC.h”就行了,例如:

#include
#include "fc.h"
void main()
{
f();
while(1);
}

结果大功告成,成功编译,但是并没有想象中那么实用,例如fc.c中如果定义了函数但没有被引用的话,keil会发出警告,虽然可以编译,但是一大堆警告很烦人,也和容易让人忽视其他很重要警告。我想自己编写头文件主要是适用于大型工程吧。很多人编写各自不同的函数,然后通过头文件的引用把函数给主程序或者其他子程序引用。

注:fc.h也可以放在keil/C51/INC下,引用时变为#include

最近在学模块化编程。要自己写头文件。看了一下别人的头文件,无非就两种。
一种是只有一个.h文件,把函数的定义及函数的具体实现都放在一个.h文件中。
另外一种是一个.c文件,一个.h文件。.c是函数的具体实现,而.h只是定义函数。
这两种谁优谁劣?

第二个比第一个稍微好点。

第二个的修改:C文件中定义函数和变量及函数的具体代码,在H文件做变量和函数的声明以及其他的宏定义,不应该涉及具体的代码实现和函数定义等。

C51编程:头文件条件编译

程序移植到另外一个CPU上,其中头文件要更改。如想做一个兼容的,可用条件编译来控制头文件的编译。

假如有两个头文件my1.h和my2.h,在CPU1上编译my1.h,在CPU2上编译my2.h,则:

#define CPU1 // 在使用CPU1时打开该定义,反之关闭该定义;该定义放在公共入口头文件的顶头

#ifdefine CPU1

#include "my1.h"

#else

#include "my2.h"

#endif

如还有更多文件呢,如system.h,hard.h,这些在两个系统中都要有的,则有区别的就放在这里面,相同的就放在外面

#ifdef CPU1

#include "my1.h"

#include "system1.h"

#include "hard1.h"

#else

#include "my2.h"

#include "system2.h" 也可以是system1.h

#include "hard2.h"

#endif

#include "Public1.h"

...

也可以在各个头文件中把有差异的地方用

#ifdef CPU1

#else

#endif

来区分开来

不仅仅是头文件,其他输出设备以及电路板的不同版本都可采用条件编译

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top