tigeroser 发表于 2013-5-8 12:58:58

C语言模块化编程 规范编程 个人总结请拍砖

一、
写C程序,应该像书上说的采用模块化编程,但书上没具体讲解,合作编程时没有一定的约束是行不通,据说LINUX上的模块编程很规范,应该学学
个人认为一般的编程应该像STM32上的程序模块一样,=====不同的外设驱动如timer gpio等放在一个文件里, =====不同的外围硬件驱动如TFT液晶,传感器AD DA的驱动放在一个文件里,主函数是用一个main.c管理。用宏定义之类的进行处理,确保在main中能调用到这两个文件中的任何一个C函数,如下图main所示


二、模块化中的数据传递的效率与代码问题---------子函数的目的是调用外设、外围硬件得到的数据并存入在数组buff中,有主函数调用它时,传递数组据

我一般采用的方法:在main中调用子函数,子函数返回数组buff的地址,通过这个地址来访问子函数中数组数据(C 函数return一堆数吧?)
问题在于   在main函数中如何得到子函数的数组buff中的数,

          法1:在main中开辟数组,通过子函数传递的首地址,把数组buff的内容复现过来
          法2:在main中定义指针变量,通过子函数传递的首地址,指向数组buff
用一个18B20来测试如下
          本例中ds18b20.c中的ID子函数的目的是得到18B20的ID号,并存入缓存buff中,
          在main函数中,采用法1 ,定义一个数组RomComd ,通过buff的首地址把ID号复制进来。(ID子函数返回的是buff数组的首地址)
                           采用法2 ,定义一指针变量*p,指向buff的首地址,指向buff数组。

          经验证:    法1-----多定义一个变量数组用来复制内容,但定义代码少(实测,少一10个code)
                                     法2-----指针指向法好理解,但编译后的代码多
                      
问题在于***************是不是代码越少 效率越高。???????哪位能描述一下这两个的好坏

Excellence 发表于 2013-5-8 13:19:23

继续。。。。
         

李鸿鸿 发表于 2013-5-12 18:31:27

看不懂,楼主能详细点吗?

deli333 发表于 2013-5-13 13:00:33

是得规范一下

tigeroser 发表于 2013-5-15 10:44:32

李鸿鸿 发表于 2013-5-12 18:31 static/image/common/back.gif
看不懂,楼主能详细点吗?

详细一点的请参考STM32固件库的官方程序。
简单说就是对CPU来说,处理器的外设(ADC TIMER等)、外围器件(外部ADC、TFT)等都是它的底层,或者功能部门,要做的是按规范写好它的驱动程序。1)程序模块见参考STM32固件库程序
    2)程序流程最好参考官方PDF的操作流程图,DS18B201602的说的很规范。所说器件厂商已经把程序写的很规范的,但只有对大客户开放。
贴企图看看

绿茶山人 发表于 2013-5-21 16:55:28

模块化编程必须要规范,程序有个几千行几万行就能知道好处了,指针超级强大,用好了事半功倍!楼主继续!顶!

and001 发表于 2013-8-4 22:57:41

tigeroser 发表于 2013-5-15 10:44 static/image/common/back.gif
详细一点的请参考STM32固件库的官方程序。
简单说就是对CPU来说,处理器的外设(ADC TIMER等)、外围器件 ...

还是没看到实际例子!我很想理一下!就是还没理顺!

分开很多文件的时候,因为一般函数只能返回一个值,如果几个值要返回就麻烦了(当然如果不是模块化好象问题比较好解决),因为整个在一个文件中!不知道是不是我说清楚了!

tigeroser 发表于 2013-8-6 17:54:30

and001 发表于 2013-8-4 22:57 static/image/common/back.gif
还是没看到实际例子!我很想理一下!就是还没理顺!

分开很多文件的时候,因为一般函数只能返回一个值, ...

处理多数据,一般开辟个数组,然后返回指针,我是这样用的(模仿库函数的外设例程的模式)

hongkong 发表于 2013-8-7 14:46:25

规范是有必要的

1148729990 发表于 2013-8-7 23:37:41

lz发个自己的模板出来膜拜下吧..{:smile:}

jiaohaitao 发表于 2013-8-7 23:53:01

确实啊,小工程不显,代码多了,自己都头疼,后期维更费力,宁愿开始的时候多见几个模块,多见几个头文件,以后会受益

llluosky 发表于 2013-8-8 09:40:36

挺不错的
页: [1]
查看完整版本: C语言模块化编程 规范编程 个人总结请拍砖