HI,首先跟各位声明一下:#define Beirnie 刘园珍 //估计以后得一直用Bernie作为我的英文名了 去公司后特意取的一个名字,感觉还是蛮好听的,好吧!切入正题,今天写此日志并不是来教大家,只是来分享一点我在公司学到一点有用的东西,希望对各位有所帮助,当然我会持续更新的,当然内容也会越来越深入的,今天的写头文件的方法只是第一步,相信你看了对你绝对会有帮助的: 第一,写头文件的作用一般都是为了定义变量,声明函数等功能。那么在写头文件之前,我会首先定义一个自己专有的头文件,定义类型简写我们采用基本的头文件编写方式,如下:
#ifndef __config_h__#define __config_h__typedef signed char S8;typedef signed int S16;typedef signed long S32;typedef unsigned char U8;typedef unsigned int U16;typedef unsigned long U32;typedef volatile signed char VS8;typedef volatile signed int VS16;typedef volatile signed long VS32;typedef volatile unsigned char VU8;typedef volatile unsigned int VU16;typedef volatile unsigned long VU32;typedef U8 code FLASH;typedef union{ u8 byte; struct byte_field{ u8 b7:1; u8 b6:1; u8 b5:1; u8 b4:1; u8 b3:1; u8 b2:1; u8 b1:1; u8 b0:1; }bit;}BYTE_TYPE;typedef union{ u16 word; u8 byte[2]; struct word_field{ u8 b17:1; u8 b16:1; u8 b15:1; u8 b14:1; u8 b13:1; u8 b12:1; u8 b11:1; u8 b10:1; u8 b7:1; u8 b6:1; u8 b5:1; u8 b4:1; u8 b3:1; u8 b2:1; u8 b1:1; u8 b0:1; }bit;}WORD_TYPE;typedef enum{ FALSE = 0, TRUE = !FALSE} BOOL;#define False FALSE#define True TRUE#define Ok 1#define UnOk 0#define Fail 0#define Success 1#endif第二,接着要讲的才是真正怎么写头文件的方法在原函数C文件中定义:#define _DEF在h文件中就该这样写:#ifdef _DEF#define DEF_EXT#else#define DEF_EXT extern#endif#include "myconfig.h"DEF_EXT BYTE_TYPE _sFlago;#define sFlag0 _sFlag0.byte#define PwrFlag _sFlag0.bit.b7DEF_EXT WORD_TYPE _sFlag1;#define sFlag1 _sFlag1.word#define sFlag1_H _sFlag1.byte[0]#define sFlag1_L _sFlag1.byte[1]#define PwrFlag_last _sFlag1.bit.b17DEF_EXT u8 Bernie_Cool;DEF_EXT void Bernie(void);
该头文件就编写完了,为什么要这样写呢?
这是避免了在头文件重复调用所带来的编译出错,并且可以省掉函数和变量使用前的单独声明,省时省力。
例如有多个文件,都是按以上头文件的编写格式,我们便可以这样写一个File.h的头文件:
#include “0.h” #include “1.h” #include “2.h” #include “3.h”
而在以后的C文件中只要包含file.h文件就搞定了,是不是觉得很方便呢?
这样的编写方式在实际项目编写中是非常方便的,其中还有对位的定义,高低字节的定义,希望对大家有所帮助……
-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。