因仑“3+1”工程特种兵精英论坛

标题: C语言模块化编程 规范编程 个人总结请拍砖 [打印本页]

作者: 痛苦的滋味    时间: 2016-4-27 21:26
标题: 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-----指针指向法好理解,但编译后的代码多
                     
问题在于***************是不是代码越少 效率越高。???????哪位能描述一下这两个的好坏





欢迎光临 因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4