C程序采用模块化的编程思想,需合理地将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求,在模块的划分上主要依据功能。模块由头文件和实现文件组成,对头文件和实现文件的正确使用方法是:
* 规则1 头文件(.h)中是对于该模块接口的声明,接口包括该模块提供给其它模块调用的外部函数及外部全局变量,对这些变量和函数都需在.h中文件中冠以extern关键字声明;
* 规则2 模块内的函数和全局变量需在.c文件开头冠以static关键字声明;
* 规则3 永远不要在.h文件中定义变量;
许多程序员对定义变量和声明变量混淆不清,定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量。如:
/*模块1头文件:module1.h*/
int a = 5; /* 在模块1的.h文件中定义int a */
/*模块1实现文件:module1.c*/
#include “module1.h” /* 在模块1中包含模块1的.h文件 */
/*模块2实现文件:module2.c*/
#include “module1.h” /* 在模块2中包含模块1的.h文件 */
/*模块3实现文件:module3.c*/
#include “module1.h” /* 在模块3中包含模块1的.h文件 */
以上程序的结果是在模块1、2、3中都定义了整型变量a,a在不同的模块中对应不同的地址单元,这明显不符合编写者的本意。正确的做法是:
/*模块1头文件:module1.h*/
extern int a; /* 在模块1的.h文件中声明int a */
/*模块1实现文件:module1.c*/
#include “module1.h” /* 在模块1中包含模块1的.h文件 */
int a = 5; /* 在模块1的.c文件中定义int a */
/*模块2实现文件: module2.c*/
#include “module1.h” /* 在模块2中包含模块1的.h文件 */
/*模块3实现文件: module3.c*/
#include “module1.h” /* 在模块3中包含模块1的.h文件 */
这样如果模块1、2、3操作a的话,对应的是同一片内存单元。
* 规则4 如果要用其它模块定义的变量和函数,直接包含其头文件即可。
许多程序员喜欢这样做,当他们要访问其它模块定义的变量时,他们在本模块文件开头添加这样的语句:
extern int externVar;
抛弃这种做法吧,只要头文件按规则1完成,某模块要访问其它模块中定义的全局变量时,只要包含该模块的头文件即可。
分享到:
相关推荐
5. **命名规范**:C语言头文件通常遵循小写字母和下划线的命名约定,例如 `my_function.h`。标准库头文件使用尖括号包裹,而自定义头文件使用双引号。 6. **头文件保护**:为了避免头文件被多次包含导致错误,通常...
参考博客《使用Python读取C语言头文件》(链接:https://blog.csdn.net/li171049/article/details/126673510),作者提供了一种方法,通过解析头文件的文本内容来提取关键信息。这个过程可能包括以下步骤: 1. **...
本知识点将详细介绍如何编写自己的C语言头文件,包括头文件的编写规则、声明和定义的区别、头文件中可以定义的实体等内容。 一、头文件的编写规则 在编写头文件时,需要遵守一些规则,以免出现链接错误。头文件...
了解和正确使用C语言头文件是编写有效、可靠代码的关键。头文件不仅简化了代码的组织,还保证了模块之间的接口清晰,有助于代码的复用和维护。在编程实践中,根据实际需求选择合适的头文件,是提升代码质量和效率的...
这是由于C语言的局部作用域规则,当一个函数在被引用之前未被定义,编译器就会报错。解决这个问题的一种方式是调整源文件的顺序,确保调用函数在定义之前;另一种方法则是使用函数声明,即在调用函数的位置之前告诉...
一个典型的C语言头文件可能包含以下几部分: 1. **防止重复包含的保护机制**: ```c #ifndef__ABC_H__ #define__ABC_H__ ``` 这部分代码的作用是防止头文件被多次包含导致的重复定义错误。`__ABC_H__`是一个...
### C语言头文件的使用与写法 #### 概述 在C语言编程中,头文件(Header Files)是至关重要的组成部分。它们包含了函数声明、宏定义、类型定义等信息,使得其他源文件能够调用这些函数或使用这些定义。合理地使用...
《易语言-C语言头文件一键转易语言DLL命令详解》 在编程领域,不同编程语言之间的互操作性是一项重要的技术挑战。易语言作为一款中国本土的编程语言,以其直观的语法和丰富的内置命令深受初学者和专业开发者的喜爱...
2. **词法与语法分析阶段**:编译器进一步解析代码,检查其是否符合C语言的语法规则。 3. **编译阶段**:在此阶段,代码被翻译成汇编语言,然后进一步转换为机器码。这一过程中,编译器会为每个源文件生成一个对象...
单片机C语言--头文件的编写 单片机C语言编程中,头文件的编写是非常重要的一步。头文件的作用是提供了一个统一的接口,方便了模块化编程和代码重用。以下是头文件编写的详细步骤和相关知识点: 一、模块化编程--...
C语言头文件的编写和引用 C语言中的头文件可以自己写吗?答案是肯定的。头文件是一种文本文件,可以使用文本编辑器编写,并以扩展名.h保存。头文件中通常包含一些重复使用的代码,例如函数声明、变量声明、常数定义...
C语言中头文件的函数和全局变量 C语言中头文件的主要作用是提供一个存放重复使用代码的空间,例如函数声明、变量声明、常数定义、宏的定义等等。头文件的内容可以被多个源文件引用,以便实现代码的重用和共享。 ...
因此,需要理解两者的数据类型转换规则,确保数据正确传递。 7. **错误处理**:在C语言的DLL中,可以使用返回值或传入的错误码指针来报告错误。而在易语言中,可能需要通过自定义异常机制来捕获和处理错误。 8. **...
C语言在头文件中定义const变量详解 在头文件中定义const不会有多变量的警告或错误,如果该头文件被大量包含会造成rom空间的浪费。 通过查看*.i文件的展开呢,可以发现每个.i文件都会有相应的变量展开。 查看*.map...
以下是一些常见的C语言头文件及其用途: - **`<assert.h>`**:提供断言机制,用于程序调试。 - **`<ctype.h>`**:包含用于字符分类的函数,如判断字符是否为数字或字母等。 - **`<errno.h>`**:定义了系统错误码...
### 嵌入式C语言编程规则详解 #### 一、引言 嵌入式系统的开发涉及硬件与软件的高度融合,而C语言作为最常用的嵌入式编程语言之一,掌握其编程规范对于提高软件质量至关重要。本文将详细介绍嵌入式C语言编程中的...
这份文档标题为《21.C语言编码规则2.0[定义].pdf》,从给出的内容来看,文档包含了一系列关于C语言编程的编码规范和一些编程关键词汇的讨论。文档内容杂乱无章,似乎包括代码片段、关键字、宏定义、编程规则以及一些...
总之,POSIX正则表达式是C语言编程中的一个重要工具,无论在Linux还是Windows环境下,都可以通过`regex.h`头文件提供的API实现强大的文本匹配功能。了解和掌握这些函数的使用方法,对于提升C/C++程序的文本处理能力...