防止重复定义的extern技巧的使用
来源:互联网 发布:海岛奇兵坦升级数据 编辑:程序博客网 时间:2024/05/22 00:13
这些文章是 作者看一些优秀的代码的学习笔记。本篇是uc_os中的一些代码。
有不对的地方,欢迎大家拍砖指正。共同进步,O(∩_∩)O~
防止重复定义的extern技巧的使用
如:自己创建一个工程,全局变量应该是得到内存分配并且可以被其他模块通过C语言中的extern关键字调用的变量。因此,必须在 .C 和 .H 文件中定义或是通过extern来引入,这种重复的定义很容易导致错误。
以下讨论的方法只需在头文件中定义一次,这就是学习本文的目的。
module_name_head.h中
#ifdef module_name_GLOBALS
#define module_name_EXT
#else
#define module_name_EXT extern
#endif
module_name_EXT INT8U method_name(); // 对方法的声明
module_name_head_common.c中
#define module_name_GLOBALS // 此文件中定义了此宏(module_name_GLOBALS ),所以最好把公用的方法,对外的接口的实现都写在此文件。
#include "module_name_head.h"
module_name_EXT INT8U method_name()
{
// 实现此方法;
// 此方法是对外的接口,或是本项目中公用的方法;
}
module_name_file_1.c中
#include "module_name_head.h"module_name_file_2.c中
#include "module_name_head.h"module_name_file_3.c中
#include "module_name_head.h"这样的话,在 其余的文件中file_1.c 和 file_2.c 和 file_3.c 中:
module_name_EXT其实都是extern,所以它们都是对module_name__head_common.c文件中
INT8U method_name()方法的引用;代码中对该方法的调用就ok了。
因此不会出现重复定义的情况。
若是需要添加一个公用方法的话,只需在 XXX_head.h 头文件中添加一个声明,在XXX_head_common.c中添加实现就ok了。
- 防止重复定义的extern技巧的使用
- 防止全局变量、头文件重复包含与 extern 的使用
- 防止头文件被重复包含、extern、变量定义与声明的区别
- extern全局变量的定义使用
- 防止头文件重复包含引起的变量重复定义
- 解密C++令人费解的重复定义错,extern关键字
- 防止头文件重复包含的宏定义模板
- 防止头文件中重复定义的小方法
- session的使用:防止表单重复提交
- Android中防止重复点击的小技巧
- Android中防止重复点击的小技巧
- 防止连续点击打开两个重复页面的小技巧
- Toast使用小技巧-防止重复创建
- 头文件中添加了防止重复包含的宏,依旧报重复定义的问题
- 防止全局变量重复定义
- 防止变量重复定义
- linux下项目开发中防止重复定义和重复包含的方法
- #ifndef #define #endif防止的是“重复编译”,而不是“重复定义”
- 年终策划:2011,你赢了没?
- 设计模式 (一) 初次体验
- CopyU! v2 的USB识别及操作内核更新
- 做事要专注
- J2EE知识结构
- 防止重复定义的extern技巧的使用
- 关于面对对象的知识点
- 分享一个收集到的文件和目录操作类FileSystemObject
- 文本阅读的功能实现
- [经济杂谈]简单的漫画(阐述金融战争的基本原理)
- VC 音视频编程接口mciSendString
- asp.net中获取网站根目录和物理路径的方法
- 2012春运大军,没有了他的踪迹
- myeclipse启动项介绍