① c语言中是如何实现模块化的
c语言是模块化编程的工具,模块如何组织,模块之间如何交互应该是个大问题。我觉得有以下几个值得注意的地方(不对的地方请大家指正):
1、每个源文件就是一个独立的模块,它应该能够在不连接任何其它模块、不需要其它源文件的情况下独立编译。
2、模块之间是通过函数、常量、变量、结构定义、宏(似乎也是常量的一种)进行交互的
3、每个模块应该包括导入和导出两个部分,比如要调用另外一个模块的函数foo(),需要
extern int foo();
这应该属于模块的导入部分
而由该模块提供的函数,应该在相应的头文件中声明,作为模块的导出部分。
模块的导出部分应该放在该模块的头文件中。
4、如果只在本模块使用的变量,在本模块中定义成static的就可以了;否则就是全局变量,全局变量在头文件中声明一下,同时也作为模块的导出部分。
5、宏既可以定义在头文件中,也可以定义在源文件中。如果宏只是模块中用到,相当于局部常量,放到源文件中好了;如果其它模块也要用到,那么把它放到头文件中去。
6、结构定义似乎都放在头文件中。是不是应该另外有一个头文件,专门用来定义结构???
首先,我不知道自己的想法是否正确;其次,关于到底应该怎么样组织文件,我想应该也是有个标准的,可惜我没找到这样的资料。希望有高人能站出来指点一下,谢谢
② c语言是完全模块化和结构化的语言,怎么理解,什么是模块化和结构化
所谓模块化,简单的理解,就是说你的程序是由相互之间相对独立的模块组成。那么具体的说,一个稍微大一点的程序,不可能用一个.c源文件写上几十万行来完成它吧?这个程序会由许多分离的.c源文件来完成代码编写对吧。因此在组织源代码的时候,程序员把在概念上和功能上相对独立的模块分离成单独的.c源文件,这些.c源文件经过编译器编译之后成为独立的.o目标文件,然后链接器将这些独立的.o目标文件链接起来成为最终的程序。这就是模块化的简单理解,模块化侧重于“形成最终程序的源代码可以分离编写在各个.c源文件中”这个涵义。
而结构化则相对来说是一种程序逻辑上的概念。也就是说,你怎么将你的程序最终要达成的功能以一种逻辑的方式将其分离为相对独立的功能,而这些单独的功能最终达成程序的整体功能。而一门语言要支持这种逻辑的分离,就必须提供一种相应的手段和方法来达成这种逻辑的分离对吧。简单的说,如果C语言不允许你自己定义函数,要求你将所有的功能实现都必须写在一个main函数里面的话,你想想也知道那简直太糟糕了对吧。所以C语言提供了一个函数的概念,你可以在函数里定义相对独立的逻辑,函数与函数之间通过函数调用和参数传递来相互沟通。这样就使得一个整体的逻辑可以被分离成相对独立的逻辑,这些相对独立的逻辑通过相互的沟通来达成整体的逻辑。结构化侧重于“你可以将程序逻辑相互分离”这个涵义
③ c语言模块化程序设计
1.模块化编程是指将一个庞大的程序划分为若干个功能独立的模块,对各个模块进行独立开发,然后再将这些模块统一合并为一个完整的程序。这是C语言面向过程的编程方法,可以缩短开发周期,提高程序的可读性和可维护性。
2.在单片机程序里,程序比较小或者功能比较简单的时候,我们不需要采用模块化编程,但是,当程序功能复杂、涉及的资源较多的时候,模块化编程就能体现它的优越性了。如前面我们写过的HT1380驱动程序、独立按键扫描程序和12864程序,每一个程序都是只用一个源文件编写就能完成,但是,当您制作一个12864液晶日历的时候,需要用到HT1380驱动程序、独立按键扫描程序和12864显示程序,如果把这三个程序全部集中在一个源文件里,将导致主体程序臃肿且杂乱,这样做并非不可取,只是降低了程序可读性、可维护性和代码的重用率。如果把这三个程序当做三个独立的模块放到你的主体工程进行模块化编程,效果就不一样了。实际上,模块化编程就是模块合并的过程,就是建立每个模块的头文件和源文件并将其加入到主体程序的过程。主体程序调用模块的函数是通过包含模块的头文件来实现,模块的头文件和源文件是模块密不可分的两个部分,缺一不可。所以,模块化编程必须提供每个模块的头文件和源文件。
④ 理解,谈谈C语言函数的作用以及如何做模块化程序设计
C语言中的模块化体现在两个方面:
1 函数。函数是C语言的最小单位,每个函数均实现一个独立的功能,于是每个函数均可以当做是一个最小的功能模块。这样,C语言就实现了最基本的模块化。
2 文件。在C语言中,支持一个程序由多个源文件编译,所以可以把类似功能的一组函数写在同一个文件中,以源文件为单位,实现模块化。当模块较大时,可以写在多个头文件中,然后编译成一个库文件,以库文件为单位,实现模块化。