在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使用相关推荐

  1. Redis源码学习(20),学习感悟

      最近学习Redis源码也有半个月的时间了,有不少收获也有不少感悟,今天来好好聊聊我学习的感悟. 1 发现问题   人非圣贤孰能无过,只要是人难免会犯错,回顾我之前的学习历程,其实是可以发现不少的问 ...

  2. 能否用痰盂盛饭——谈谈在头文件中定义外部变量

    能否用痰盂盛饭--谈谈在头文件中定义外部变量 - garbageMan - 博客园 能否用痰盂盛饭--谈谈在头文件中定义外部变量 "能否用痰盂盛饭"并非是一个技术问题,而是一个哲学 ...

  3. Redis源码解析——有序整数集

    有序整数集是Redis源码中一个以大尾(big endian)形式存储,由小到大排列且无重复的整型集合.它存储的类型包括16位.32位和64位的整型数.在介绍这个库的实现前,我们还需要先熟悉下大小尾内 ...

  4. Redis源码解析——字典结构

    C++语言中有标准的字典库,我们可以通过pair(key,value)的形式存储数据.但是C语言中没有这种的库,于是就需要自己实现.本文讲解的就是Redis源码中的字典库的实现方法.(转载请指明出于b ...

  5. Redis源码解析——前言

    今天开启Redis源码的阅读之旅.对于一些没有接触过开源代码分析的同学来说,可能这是一件很麻烦的事.但是我总觉得做一件事,不管有多大多难,我们首先要在战略上蔑视它,但是要在战术上重视它.除了一些高大上 ...

  6. 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 ...

  7. Redis源码剖析和注释(十六)---- Redis输入输出的抽象(rio)

    Redis源码剖析和注释(十六)---- Redis输入输出的抽象(rio) . https://blog.csdn.net/men_wen/article/details/71131550 Redi ...

  8. Redis源码解析——双向链表

    相对于之前介绍的字典和SDS字符串库,Redis的双向链表库则是非常标准的.教科书般简单的库.但是作为Redis源码的一部分,我决定还是要讲一讲的.(转载请指明出于breaksoftware的csdn ...

  9. Redis源码解析——字典基本操作

    有了<Redis源码解析--字典结构>的基础,我们便可以对dict的实现进行展开分析.(转载请指明出于breaksoftware的csdn博客) 创建字典 一般字典创建时,都是没有数据的, ...

最新文章

  1. linux 下部署Python项目
  2. 高内聚、低耦合的理解
  3. 计算机组成原理 外部设备分为,2017考研计算机组成原理第七章考点:外部设备...
  4. 中运算符百分号作用_SQL基础知识——LIKE运算符
  5. hp-ux 单用户 启动_UX备忘单:搜索与浏览
  6. apache karaf_未来是Apache Karaf上的微服务架构
  7. uboot之fastboot烧录镜像
  8. LeetCode刷题(46)--Search in Rotated Array
  9. 【lidar】单目深度估计与伪雷达点云、可视化
  10. DNK编程 JNI 之 javah
  11. 【## 1、浏览器及内核-】
  12. 我学会了用计算机作文,我学会了作文(15篇)
  13. 2019新版前端与移动开发学习路线图(视频+工具+书籍+资源)
  14. webstorm 2018 激活破解方法亲测可用
  15. 小米 微信:无法连接服务器,微信出现大规模故障 多地无法登录
  16. 解决阿里云postfix邮件发不出去的问题
  17. 3.25 使用钢笔工具选择平滑形状的叶子 [原创Ps教程]
  18. 美容,美甲,美妆等美业如何接入小程序
  19. 电子政务信息管理平台方案
  20. 第6关:人民币美元汇率双向兑换计算

热门文章

  1. 自然科学期刊能发表计算机论文吗,自然科学专业论文好发表吗?
  2. 如何设计恒流源输出电路?
  3. 深度学习--TensorFlow(8)CNN卷积神经网络理论(计算机视觉)
  4. win10 java applet_win10系统的ie11浏览器无法打开Java applet
  5. invalid project description._[Project教程] 在Project软件中如何处理加班工时
  6. WebStorm设置Ctrl+0恢复默认字体大小,设置全局字号大小
  7. 在CentOS 6.9 x86_64的OpenResty 1.13.6.1上使用基于Redis实现动态路由示例
  8. 为ThinkPad T420增加一根4G内存
  9. 中体骏彩C++面试题
  10. 二叉树:路径之和 Path Sum