gpt4 book ai didi

c - 使用 typedef 和结构理解 C 代码

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:34 25 4
gpt4 key购买 nike

以下是我试图理解的 .c 文件的相关片段:

阅读片段之前的背景:

一旦获得数据包,线程就会监听套接字。它读取数据(命令名称),并根据数据(命令)执行操作。

#define HANDLER(cmd) {#cmd, cmd} 

handler_t table[] = {
HANDLER(LOAD),
HANDLER(STORE),
HANDLER(REMOVE),
};

typedef struct _handler_t
{
char cmd[CMD_LEN];
void (*handler)(int argc, char *argv[], int sockfd);
} handler_t;


for (i = 0; i < sizeof(table) / sizeof(handler_t); i++)
if (strcmp(cmd, table[i].cmd) == 0) // where cmd is an array whose content were read from socket
table[i].handler(argc, argv, sockfd);

为什么 sizeof(table)/sizeof(handler_t)

为什么 table[i].handler(argc, argv, sockfd);

最佳答案

tablehandler_t的数组,sizeof(table)是整个数组的大小,sizeof(handler_t) 是一个元素的大小。所以sizeof(table)/sizeof(handler_t)就是数组的元素个数。另一种更常见的获取方式是 sizeof(table)/sizeof(table[0])

handler是一个函数指针,所以table[i].handler(argc, argv, sockfd);调用函数指针指向的函数。

关于c - 使用 typedef 和结构理解 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20462488/

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