gpt4 book ai didi

c - 根本没有使用Redis静态函数

转载 作者:IT王子 更新时间:2023-10-29 06:07:14 24 4
gpt4 key购买 nike

当我浏览 github 上的 Redis 源代码时,我发现源文件中丢失了静态函数,这些函数在定义它的同一文件中没有被任何人引用。由于静态函数只能在同一个文件内访问,所以根本不用这些函数!

以下是来自 src/ae_epoll.c 的示例代码片段:

static int aeApiAddEvent(aeEventLoop *eventLoop, int fd, int mask) {
aeApiState *state = eventLoop->apidata;
struct epoll_event ee = {0}; /* avoid valgrind warning */
/* If the fd was already monitored for some event, we need a MOD
* operation. Otherwise we need an ADD operation. */
int op = eventLoop->events[fd].mask == AE_NONE ?
EPOLL_CTL_ADD : EPOLL_CTL_MOD;
ee.events = 0;
mask |= eventLoop->events[fd].mask; /* Merge old events */
if (mask & AE_READABLE) ee.events |= EPOLLIN;
if (mask & AE_WRITABLE) ee.events |= EPOLLOUT;
ee.data.fd = fd;
if (epoll_ctl(state->epfd,op,fd,&ee) == -1) return -1;
return 0;
}

而且你会发现本地并没有使用函数aeApiAddEvent。在许多差异文件中都可以找到这种未使用的静态函数。

为什么定义了却没有使用?我是否遗漏了一些要点?

最佳答案

the static function can be only accessed within the same file

这是错误的。正确的是说他们只能在同一个translation unit里面访问.

可以从某处包含该文件。

因此,它们包含.c 文件的原因是,根据某些配置参数,它们会选择不同的代码进行编译。

参见 here .

它们包含在 the file here 中.

关于c - 根本没有使用Redis静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55199155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com