您的位置:首页 > 其它

多个".h"文件中声明及定义 全局变量和函数

2017-07-13 16:03 357 查看
【搞WinLex-Bison,要写C语言程序,struct关键字, extern,这些绕了弯路。尤其是struct,C里面每次用都要显示的写出来struct关键字。

有个Node.h和Node.c,里面很多方法要被别的c和cpp文件引用,但是c引用要用extern,cpp引用要用extern "C",所以就不能直接在Node.h里面准备好所有的extern,要分别在引用的c和cpp里面去写。】

原文链接:http://blog.sina.com.cn/s/blog_537d61430101cwv1.html

一、".h"文件必须以如下格式书写

例:文件《CZ_efg_hi.h"》

------------文件内容-----------

#ifndef CZ_Efg_Hi_H

#define CZ_Efg_Hi_H

.....

所有文件内容

.....

#endif

---------------------------------

二、全局变量 在".h"文件中声明,在".c"文件中定义及初始化

例:某2个全局变量

小型程序中 :

unsigned char CommandStackAppendPoint=0;

bit CommandStackOverflow=0;

在大型程序中

".h"文件 只声明

extern unsigned char CommandStackAppendPoint;

extern bit CommandStackOverflow;

".c"文件 定义及初始化

unsigned char CommandStackAppendPoint=0;

bit CommandStackOverflow=0;

三、特别要注意数组类型的声明及定义

[]里空的表示“声明”,[]里定义了长度则表示“定义”

普通数组

小型程序中

unsigned char SerialRxDataBuffer[4];

大型程序中

".h"文件 声明([]中空的)

extern unsigned char SerialRxDataBuffer[];

".c"文件 定义([]中定义了长度)

unsigned char SerialRxDataBuffer[4]={0,1,2,3};

结构数组

小型程序

extern struct Command

{

unsigned char DeviceCode;

unsigned char ControlParameter;

unsigned char DataH;

unsigned char DataL;一个15位的数值

} CommandStack[4];

大型程序

".h"文件

extern struct Command

{

unsigned char DeviceCode;

unsigned char ControlParameter;

unsigned char DataH;

unsigned char DataL;一个15位的数值

} ;

extern struct Command CommandStack[];

".c"文件

struct Command CommandStack[4];

四、函数声明

只要在".h"文件内将所有生命的函数前加上extern即可

小型程序

void InitCommandStack() ; //初始化命令堆栈 , 将所有值置0

大型程序

extern void InitCommandStack() ; //初始化命令堆栈 , 将所有值置0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐