关于模块化编程问题

2020-01-25 15:23发布

本帖最后由 and001 于 2013-8-4 11:55 编辑

为了使程序更加结构紧凑,具有更好的条理化,程序员往往将自己的程序按模块分成若干个原文件(*。c).然后用H头文件将函数相互关联起来,要调用就方便了!

现在我有个问题好象不是太明白,就是函数本身有时需要全局变量来参与运行如下:

KEY.C文件如:
void Key_SCan(void)
        {
               
        if(fkey_count)    //fkey_count是用来做标志,为“1”的时候才进入出来扫描
                {
//                P1=0xF4;
//        确认是自动扫描还是手动选择 ,手动时的自己输出  fhand_operation 1: 自动扫描 0: 手动
                uchar        Status_P_1_for_P1_0;
                fkey_count=0;
                Status_P_1_for_P1_0=P1;
                if(!(Status_P_1_for_P1_0&0x01)) {fhand_operation=0;}
                else{fhand_operation=1;}                                               
                old_status=new_status;
                new_status=P1;       
                }


KEY.H文件如:
         #ifndef _KEY_H_
         #define _KEY_H_
/*
void Key_SCan(void);  //在这里申明各函数
....
   
   上面是的fkey_count位变量应该怎么处理比较合适呢?是在头文件H中定义还是怎么样?一般好象是不定义变量的在其他原。C文件中不定义,请问有经验的朋友,你们是怎么处理的?


  另外,调用数是用带参还是尽量不用带参数好,如果带参的话,就好象不用在KEY.C文件中定义全局位变量(只要用形参传进来就好了)请大家各抒己见...

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
and001
1楼-- · 2020-01-26 19:16
是的!感觉按功能模块来比较合适
devcang
2楼-- · 2020-01-26 20:22
qingyin2009 发表于 2013-8-5 17:57
其实占用空间是一样的,只是阅读修改起来不一样罢了

小程序当然不必要,当程序比较多的时候,一万行的程 ...

不错,  几K的程序,不必的了。  

and001
3楼-- · 2020-01-26 21:49
我觉得这是一种编程风格,要严格规范要求自己,习惯养成了要面对ARM复杂程序就条理更清楚了!
millwood0
4楼-- · 2020-01-27 01:18
 精彩回答 2  元偷偷看……
wzd5230
5楼-- · 2020-01-27 04:44
我的经验是头文件里面只声明函数,不要定义变量,可以定义枚举体什么的,但是不要定义变量,否则在重复包含头文件的时候会有变量重复定义的问题,全局变量就在.c文件中定义就可以了,如果需要在别的文件中进行引用,直接在需要引用的那个文件里定义外部变量,比如:extern int var;这样就可以在这个文件里面用了。
ghostxdy
6楼-- · 2020-01-27 10:04
Etual 发表于 2013-8-5 08:23
对于模块以外使用的全局变量,不能通过
extern int var 的形式去调用,应该这样做:

这番话点醒了我,谢谢

一周热门 更多>