日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C语言extern关键字定义外部变量--Redis源码extern使用

發布時間:2023/11/27 生活经验 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。