基于C语言的代码文件组织
2014-04-05 17:52
351 查看
基于C语言的代码文件组织
嵌入式系统一般用C语言来实现,当代码规模增大后经常出现各种问题:如何将众多的源文件放置在不同的目录中?头文件.h和源文件.c如何组织?说明文档和源文件如何存放?还要考虑移植。下面以LwIP为分析案例,学习一个经典的文件组织架构。
图1 LwIP文件组织架构
从图1可以看到,设计者一开始就考虑了主代码与移植代码分离:lwip是主代码,LwIP_Port是移植代码,当需要移植LwIP时可以让用户只关心LwIP_Port目录下的文件,减少工作量。
LwIP_Port下有两大目录,arch目录保存LwIP移植到不同OS下时该修改的文件,ethernetif保存LwIP移植到不同的网络适配器时该修改的文件。
图2
主代码与移植代码分离
主代码目录下,首先是doc目录,它保存LwIP的说明文档,其次是src目录,它保存LwIP的主文件。主文件按不同的功能又分成4部分:api是用户调用接口,core是核心文件,include是整个系统的头文件存放区,netif处理底层网络接口。
图3
主文件的组织
接下来再来看看.h头文件是如何组织的,从图4可以看出,所以的头文件都存放在LwIP\lwip\src\include下,头文件与.C源文件还具有良好的对应关系,这种统一存放方便查找和维护。
图4
头文件的存放与对应关系
把头文件集中存放的另一个好处是便于代码编译,当代码放置于编译环境(常见为IED环境)中可以设置预编译路径,告诉编译器头文件在什么地方。设当前编译环境为IAR,以图4为例可以设置预编译宏指令,在工程的Option下,选择C/C++
Compiler下的Preprocessor,添加
$PROJ_DIR$ \Lwip\lwip\src\include
这样一来,.C源文件的如下语句就能让编译器找到对应的头文件。
#include "lwip/def.h"
因为编译器会将上述语句的包括路径解释成:($PROJ_DIR$是工程当前目录)
#include $PROJ_DIR$ \Lwip\lwip\src\include\lwip\def.h
相关文章推荐
- C语言项目中头文件/代码文件的组织问题(使用VC6.0)
- C语言常用的代码组织形式--多文件
- 基于visual c++之windows核心编程代码分析(26)实现文件关联
- linux文件操作指令的c语言代码实现
- 让UltraEdit自动对pro*c代码文件语法着色为c语言格式
- 1j2ee即web项目,严格意义上来说,没有jsp代码,只有class文件、html文件、javascript文件。2 基于extjs框架的项目怎么怎么查看在浏览器中展示的最终html页面的代码 3
- 基于nodejs+express4.X实现文件下载的实例代码
- C语言及程序设计实践项目-递归和多文件组织
- 服务器基于PHP CodeIgniter,Android基于Volley实现多文件/图片上传(含服务器,web版和android客户端完整代码)
- 基于HIVE文件格式的map reduce代码编写
- C语言 文件的随机读写详解及示例代码
- 破解酷狗缓存文件 码 C语言 代码
- 基于Java Socket的文件UpLoad代码(完美版)-用递归解决java的目录树遍历
- 基于WDF的PCI/PCIe接口卡Windows驱动程序(3)- 驱动程序代码(头文件)
- 能分析压缩的日志,且基于文件输入的PYTHON代码实现
- VScode中自定义用户代码片段(C user snippet)自动生成C语言头文件排除重复包含
- C语言 以字符形式读写文件详解及示例代码