gpt4 book ai didi

c - 什么是结构类型内部的可变大小类型

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

我正在尝试在项目 nodogsplash 中添加一个额外的功能。

struct addrlist_t {                                                    
struct in_addr h_addr;
struct addrlist_t *next;
} *addrhead = NULL, *cur = NULL;

我在x86_64下工作,sizeof(struct addrlist_t)返回8字节,我想这里应该是16字节。奇怪的是&cur->h_addr&cur->next的指针是一样的。然后我在其他程序中检查 struct addrlist_t,它工作正常。

gdb 说:尝试解析出现在结构类型内部的可变大小类型

谁能帮帮我。

我检查 gcc -E

7812  struct hostent *he;                                                            
7813 struct addrlist_t {
7814 struct in_addr h_addr_list[0];
7815 struct addrlist_t *next;
7816 } *addrhead = ((void *)0), *cur = ((void *)0);
7817 struct addrlist_t **ppre = &addrhead;

最佳答案

我发现了错误。

我使用 gethostbyname其中包括#include <netdb.h> :

       struct hostent {
char *h_name; /* official name of host */
char **h_aliases; /* alias list */
int h_addrtype; /* host address type */
int h_length; /* length of address */
char **h_addr_list; /* list of addresses */
}
#define h_addr h_addr_list[0] /* for backward compatibility */

h_addr是错误定义的。

关于c - 什么是结构类型内部的可变大小类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28038611/

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