当前位置:编程学习 > C/C++ >>

C语言头文件组织

一、全局变量单独编写(很值得借鉴)。
一般习惯将不同功能模块放到一个头文件和一个C文件中。

例如是写一些数学计算函数:
[cpp] 
//mymath.h  
#ifndef _mymath_H  
#define _mymath_H  
extern int Global_A; //声明必要的全局变量  
...... 
extern void fun(); //声明必要的外部函数  
..... 
#endif 

//mymath.h
#ifndef _mymath_H
#define _mymath_H
extern int Global_A; //声明必要的全局变量
......
extern void fun(); //声明必要的外部函数
.....
#endif
[cpp] 
//mymath.c  
#include "mymath.h "  
#include <一些需要使用的C库文件>  
… 
int Global_A; //定义必要的全局变量和函数  
void fun(); 
… 
int a,b,c; //定义一些内部使用的全局变量  
void somefun(); 
 
//函数实现体  
void fun() 

     … 

void somefun() 

     … 

//mymath.c
#include "mymath.h "
#include <一些需要使用的C库文件>

int Global_A; //定义必要的全局变量和函数
void fun();

int a,b,c; //定义一些内部使用的全局变量
void somefun();

//函数实现体
void fun()
{
     …
}
void somefun()
{
     …
}哪个C文件需要使用只需包含头文件mymath.h就可以了。

但是我认为上面的方法虽然好,但是上面定义全局变量的方式在比较大的工程中引起不便,一个模块与其他模块的数据传递最好通过专有的函数进行,而不要直接通过数据单元直接传递(这是VC++的思想),因此不建议在模块的头文件中声明全局变量;全局变量最好统一定义在一个固定的文件中,所以可以采用下面的方法:

定义一个Globel_Var.C文件来放全局变量,然后在与之相对应的Globel_Var.H文件中来声明全局变量
例如:
——————————————————————————————————
[cpp] 
//Globel_Var.c  
/*******定义本工程中所用到的全局变量*******/ 
int speed; 
int torque; 
… 
… 
… 

//Globel_Var.c
/*******定义本工程中所用到的全局变量*******/
int speed;
int torque;


…——————————————————————————————————
[cpp] 
//Globel_Var.H  
/*******声明本工程中所用到的全局变量*******/ 
extern int speed; 
extern int torque; 
… 
… 

//Globel_Var.H
/*******声明本工程中所用到的全局变量*******/
extern int speed;
extern int torque;

…——————————————————————————————————
这样哪个文件用到这两个变量就可以在该文件的开头处写上文件包含命令;例如aa.C文件要用到speed,toque两个变量,可以在aa.H文件中包含Globel_Var.H文件。
——————————————————————————————————
[cpp]
//aa.H文件  
#include “Globel_Var.H”  
… 
extern void fun(); //声明必要的接口函数  
… 

//aa.H文件
#include “Globel_Var.H”

extern void fun(); //声明必要的接口函数
…[cpp] 
//aa.c文件  
#include “aa.H”//每个程序文件中包含自己的同名头件  
int a,b,c; //定义一些本文件内部使用的局部变量  
void somefun(); 
 
//函数实现体  
void fun() 

    int d,e,f; //定义一些本函数内部使用的局部变量  
    … 

void somefun() 

    … 

… 

//aa.c文件
#include “aa.H”//每个程序文件中包含自己的同名头件
int a,b,c; //定义一些本文件内部使用的局部变量
void somefun();

//函数实现体
void fun()
{
    int d,e,f; //定义一些本函数内部使用的局部变量
    …
}
void somefun()
{
    …
}
…——————————————————————————————————
在bb.c文件中用到aa.c文件中的函数void fun()或变量的文件可以这样写
[cpp] 
//bb.H文件  
#include “aa.H”  
… 
extern int fun_1(void);//声明本文件的接口函数  
… 

//bb.H文件
#include “aa.H”

extern int fun_1(void);//声明本文件的接口函数
…[cpp] 
//bb.c文件  
#include “bb.H”  
… 
int fun_1(void) 

    … 
    fun();//调用aa.C文件中的fun()函数  
    … 

//bb.c文件
#include “bb.H”

int fun_1(void)
{
    …
    fun();//调用aa.C文件中的fun()函数
    …
}——————————————————————————————————
在主函数中可以这样写:主文件main没有自己的头文件
[cpp] 
//main.c文件  
#include<系统库文件>  
#include “Globle_Var.H”  
#include “aa.H”  
#include “bb.H”  
… 
 
char fun_2();//声明主文件所定义的函数  
int i,j; //定义一些本模块内部使用的局部变量  
char k; 
… 
void main() 

   … 
   fun(); 
   … 
   i = fun_1(); 
   … 
   k = fun_2(); 
   … 

 
char fun_2() 

   … 

//main.c文件
#include<系统库文件>
#include “Globle_Var.H”
#include “aa.H”
#include “bb.H”

char fun_2();//声明主文件所定义的函数
int i,j; //定义一些本模块内部使用的局部变量
char k;

void main()
{
   …
   fun();
   …
   i = fun_1();补充:软件开发 , C语言 ,

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,