C语言extern关键字定义外部变量--Redis源码extern使用
在Redis2.8中有networking.c,这个文件没有networking.h
networking.c首先引入redis.h这个头文件
#include "redis.h"
在redis.c一开始就声明了全局变量
/* Global vars */
struct redisServer server;
networking.c的createClient函数
redisClient *createClient(int fd) {redisClient *c = zmalloc(sizeof(redisClient));/* passing -1 as fd it is possible to create a non connected client.* This is useful since all the Redis commands needs to be executed* in the context of a client. When commands are executed in other* contexts (for instance a Lua script) we need a non connected client. */if (fd != -1) {anetNonBlock(NULL,fd);anetEnableTcpNoDelay(NULL,fd);if (server.tcpkeepalive)anetKeepAlive(NULL,fd,server.tcpkeepalive);if (aeCreateFileEvent(server.el,fd,AE_READABLE,readQueryFromClient, c) == AE_ERR){close(fd);zfree(c);return NULL;}}
这里之所以可以引用redisClient就是因为redisClient在redis.h是被声明为 extern的,而networking.c已经引入redis.h这个头文件
/*-----------------------------------------------------------------------------* Extern declarations*----------------------------------------------------------------------------*/extern struct redisServer server;
不然注释掉extern struct redisServer server是编译不过去的:
关于extern和头文件的解释:
出自《C语言入门经典(第四版)》
出自《21天学通C语言(第6版)》
出自《C语言编程:一本全面的C语言入门教程 (第3版)》
C语言extern关键字定义外部变量--Redis源码extern使用相关推荐
- Redis源码学习(20),学习感悟
最近学习Redis源码也有半个月的时间了,有不少收获也有不少感悟,今天来好好聊聊我学习的感悟. 1 发现问题 人非圣贤孰能无过,只要是人难免会犯错,回顾我之前的学习历程,其实是可以发现不少的问 ...
- 能否用痰盂盛饭——谈谈在头文件中定义外部变量
能否用痰盂盛饭--谈谈在头文件中定义外部变量 - garbageMan - 博客园 能否用痰盂盛饭--谈谈在头文件中定义外部变量 "能否用痰盂盛饭"并非是一个技术问题,而是一个哲学 ...
- Redis源码解析——有序整数集
有序整数集是Redis源码中一个以大尾(big endian)形式存储,由小到大排列且无重复的整型集合.它存储的类型包括16位.32位和64位的整型数.在介绍这个库的实现前,我们还需要先熟悉下大小尾内 ...
- Redis源码解析——字典结构
C++语言中有标准的字典库,我们可以通过pair(key,value)的形式存储数据.但是C语言中没有这种的库,于是就需要自己实现.本文讲解的就是Redis源码中的字典库的实现方法.(转载请指明出于b ...
- Redis源码解析——前言
今天开启Redis源码的阅读之旅.对于一些没有接触过开源代码分析的同学来说,可能这是一件很麻烦的事.但是我总觉得做一件事,不管有多大多难,我们首先要在战略上蔑视它,但是要在战术上重视它.除了一些高大上 ...
- Redis源码-String:Redis String命令、Redis String存储原理、Redis String三种编码类型、Redis字符串SDS源码解析、Redis String应用场景
Redis源码-String:Redis String命令.Redis String存储原理.Redis String三种编码类型.Redis字符串SDS源码解析.Redis String应用场景 R ...
- Redis源码剖析和注释(十六)---- Redis输入输出的抽象(rio)
Redis源码剖析和注释(十六)---- Redis输入输出的抽象(rio) . https://blog.csdn.net/men_wen/article/details/71131550 Redi ...
- Redis源码解析——双向链表
相对于之前介绍的字典和SDS字符串库,Redis的双向链表库则是非常标准的.教科书般简单的库.但是作为Redis源码的一部分,我决定还是要讲一讲的.(转载请指明出于breaksoftware的csdn ...
- Redis源码解析——字典基本操作
有了<Redis源码解析--字典结构>的基础,我们便可以对dict的实现进行展开分析.(转载请指明出于breaksoftware的csdn博客) 创建字典 一般字典创建时,都是没有数据的, ...
最新文章
- linux 下部署Python项目
- 高内聚、低耦合的理解
- 计算机组成原理 外部设备分为,2017考研计算机组成原理第七章考点:外部设备...
- 中运算符百分号作用_SQL基础知识——LIKE运算符
- hp-ux 单用户 启动_UX备忘单:搜索与浏览
- apache karaf_未来是Apache Karaf上的微服务架构
- uboot之fastboot烧录镜像
- LeetCode刷题(46)--Search in Rotated Array
- 【lidar】单目深度估计与伪雷达点云、可视化
- DNK编程 JNI 之 javah
- 【## 1、浏览器及内核-】
- 我学会了用计算机作文,我学会了作文(15篇)
- 2019新版前端与移动开发学习路线图(视频+工具+书籍+资源)
- webstorm 2018 激活破解方法亲测可用
- 小米 微信:无法连接服务器,微信出现大规模故障 多地无法登录
- 解决阿里云postfix邮件发不出去的问题
- 3.25 使用钢笔工具选择平滑形状的叶子 [原创Ps教程]
- 美容,美甲,美妆等美业如何接入小程序
- 电子政务信息管理平台方案
- 第6关:人民币美元汇率双向兑换计算
热门文章
- 自然科学期刊能发表计算机论文吗,自然科学专业论文好发表吗?
- 如何设计恒流源输出电路?
- 深度学习--TensorFlow(8)CNN卷积神经网络理论(计算机视觉)
- win10 java applet_win10系统的ie11浏览器无法打开Java applet
- invalid project description._[Project教程] 在Project软件中如何处理加班工时
- WebStorm设置Ctrl+0恢复默认字体大小,设置全局字号大小
- 在CentOS 6.9 x86_64的OpenResty 1.13.6.1上使用基于Redis实现动态路由示例
- 为ThinkPad T420增加一根4G内存
- 中体骏彩C++面试题
- 二叉树:路径之和 Path Sum