如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
HYPERLINK"http://www.dzkf.net/misc.php?action=viewratings&tid=30328&pid=235451"\o"评分0"C语言嵌入式系统编程修炼之软件架构篇--%o.`$T-^+F't——全球最大的中文电子开发论坛模块划分t&v%D0y'\(^6a8t&[电子论坛,电子设计论坛,电子开发论坛8]"o&Z1f2^&]/s9{-g8l电子论坛,电子设计论坛,电子开发论坛模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了相对论),C语言模块化程序设计需理解如下概念:'u2|*[:S1C6E-J%O3X!b"B_3J1a&n3V电子开发论坛(1)模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;电子论坛,电子设计论坛,电子开发论坛/y9M)m:B8g#};h+C+K-h(2)某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;电子论坛,电子设计论坛,电子开发论坛(i1o*g3@4w3K1b3y6s0g6l&C3Y7{,p6D2P)^www.dzkf.net(3)模块内的函数和全局变量需在.c文件开头冠以static关键字声明;2{.U%A9k!t#j%K.p:v——全球最大的中文电子开发论坛www.dzkf.net4i&[!U9]#G!j)}(4)永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量。如:-F'{3};G1f(swww.dzkf.net)B"P6q&h"A&[电子论坛,电子设计论坛,电子开发论坛www.dzkf.net4r'f)m2~1T(u.x*p"d'D,_#G;{!c-l7f)M5t/*module1.h*/4U'X%i6_&q!x.N#r"S3b电子论坛,电子设计论坛,电子开发论坛inta=5;/*在模块1的.h文件中定义inta*/!B0B&^3Q7x;A$]电子论坛,电子设计论坛,电子开发论坛电子论坛,电子设计论坛,电子开发论坛2g0b)|'b:E"K+[/_/*module1.c*/)u0U8H;a9D5a)o$r!z$f3g:J#include"module1.h"/*在模块1中包含模块1的.h文件*/)C6j*A$N#J3_/C$l:yOwww.dzkf.net)B;z!f#`6vwww.dzkf.net/*module2.c*/;`6w9a$|0X#include"module1.h"/*在模块2中包含模块1的.h文件*/电子开发论坛"g!c%d!\'J(O电子开发论坛"_0S$}$H7o#z2M6c&`/*module3.c*/2N,r5V,r.B3fn3D#include"module1.h"/*在模块3中包含模块1的.h文件*/www.dzkf.net&C$I;t/X#e&P:X4G(A!H4s8i.i1k电子开发论坛以上程序的结果是在模块1、2、3中都定义了整型变量a,a在不同的模块中对应不同的地址单元,这个世界上从来不需要这样的程序。正确的做法是:;`.?P!C"i)V5T.U'T*s*b)o电子论坛,电子设计论坛,电子开发论坛9D:w8Y4x9[%h(o/f(Twww.dzkf.net/*module1.h*/——全球最大的中文电子开发论坛(Ld)u-^;[1Dexterninta;/*在模块1的.h文件中声明inta*/电子论坛,电子设计论坛,电子开发论坛3j!E;v1L7@;ywww.dzkf.net"K0K1n1D$C+T#S.L/*module1.c*/4@)p0G;P7~7~电子论坛,电子设计论坛,电子开发论坛#include"module1.h"/*在模块1中包含模块1的.h文件*/电子开发论坛@$}%r3U)K5{9q/T%m6p(v*q&?,einta=5;/*在模块1的.c文件中定义inta*/——全球最大的中文电子开发论坛9p)H:d*]G6c5o%q'z7Y8\&U+T1[:L!L/*module2.c*/电子论坛,电子设计论坛,电子开发论坛9z:f1p3['z;u2R#include"module1.h"/*在模块2中包含模块1的.h文件*/;t&U.k4q!@.S电子论坛,电子设计论坛,电子开发论坛0o!\2W/y5W+r-o0Y(H/*module3.c*/电子论坛,电子设计论坛,电子开发论坛"E`7Z-P:V6r:b5e#include"mo