转载 永远不要在.h文件中定义变量!
2018-02-01 09:13
148 查看
C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能,C语言模块化程序设计需理解如下概念:
(1)
模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;
(2)
某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;
(3)
模块内的函数和全局变量需在.c文件开头冠以static关键字声明;
(4) 永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量。如:
int a = 5;
#include "module1.h"
#include "module1.h"
#include "module1.h"
以上程序的结果是在模块1、2、3中都定义了整型变量a,a在不同的模块中对应不同的地址单元,这个世界上从来不需要这样的程序。正确的做法是:
extern int a;
#include "module1.h" int a = 5;
#include "module1.h"
#include "module1.h"
这样如果模块1、2、3操作a的话,对应的是同一片内存单元。
原博客:http://blog.chinaunix.net/uid-27656723-id-3345302.html
(1)
模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;
(2)
某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;
(3)
模块内的函数和全局变量需在.c文件开头冠以static关键字声明;
(4) 永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外部函数和变量。如:
int a = 5;
#include "module1.h"
#include "module1.h"
#include "module1.h"
以上程序的结果是在模块1、2、3中都定义了整型变量a,a在不同的模块中对应不同的地址单元,这个世界上从来不需要这样的程序。正确的做法是:
extern int a;
#include "module1.h" int a = 5;
#include "module1.h"
#include "module1.h"
这样如果模块1、2、3操作a的话,对应的是同一片内存单元。
原博客:http://blog.chinaunix.net/uid-27656723-id-3345302.html
相关文章推荐
- 永远不要在.h文件中定义变量----->转载一篇博客
- 变量一般不要定义在.h文件中
- C语言中尽量不要在头文件中定义变量
- 【转载】防止变量重复定义、头文件重复包含、嵌套包含
- 变量一般不要定义在.h文件中
- c++ 变量不要定义在.h 头文件当中(main already defined in *.obj 解决方法)
- 【转载】防止变量重复定义、头文件重复包含、嵌套包含
- 【转载】防止变量重复定义、头文件重复包含、嵌套包含
- 【转载】防止变量重复定义、头文件重复包含、嵌套包含
- 变量一般不要定义在.h文件中
- 最好不要在头文件里面包含定义变量
- 不要在头文件中定义变量
- 头文件定义全局变量等问题 (转载)
- 编写安全代码:不要在头文件中定义变量
- 【自我修养】不要嘻嘻哈哈的在头文件中定义变量
- 编写安全代码:不要在头文件中定义变量
- 头文件中不要去定义函数与变量
- 【转载】防止变量重复定义、头文件重复包含、嵌套包含
- 头文件定义变量的问题
- 头文件不宜定义变量原因解析