gpt4 book ai didi

C套接字错误

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:59 24 4
gpt4 key购买 nike

出于某种原因,这行代码给我带来了很大的问题。

struct socketaddr_in clientaddr;

错误信息是:

tiny.c:23:24: error: storage size of ‘clientaddr’ isn’t known

如果我删除那行代码,我会收到以下错误消息:

s2s2@s2s2-ThinkPad-T61:~/Documents/Cprogramming/web_server$ make
gcc -std=gnu99 -O2 -lpthread -lrt -o server tiny.c csapp.c
/tmp/ccVxw07i.o: In function `Pthread_create':
csapp.c:(.text+0x7e5): undefined reference to `pthread_create'
/tmp/ccVxw07i.o: In function `Pthread_cancel':
csapp.c:(.text+0x805): undefined reference to `pthread_cancel'
/tmp/ccVxw07i.o: In function `Pthread_join':
csapp.c:(.text+0x825): undefined reference to `pthread_join'
/tmp/ccVxw07i.o: In function `Pthread_detach':
csapp.c:(.text+0x845): undefined reference to `pthread_detach'
/tmp/ccVxw07i.o: In function `Sem_init':
csapp.c:(.text+0x895): undefined reference to `sem_init'
/tmp/ccVxw07i.o: In function `P':
csapp.c:(.text+0x8b5): undefined reference to `sem_wait'
/tmp/ccVxw07i.o: In function `V':
csapp.c:(.text+0x8d5): undefined reference to `sem_post'
/tmp/ccVxw07i.o: In function `Pthread_once':
csapp.c:(.text+0x881): undefined reference to `pthread_once'
collect2: ld returned 1 exit status
make: *** [webServer-gcc] Error 1

这里是 csapp.c 的链接和 csapp.h文件。

感谢所有的帮助。

最佳答案

tiny.c:23:24: error: storage size of ‘clientaddr’ isn’t known

在 C 中,您需要将结构声明为 struct structname instancename 是有原因的 - 这样 C 编译器就知道要分配多少内存 - 以及可能如何对齐该数据等。

这是 C 编译器告诉您不存在这样的结构 socketaddr_in 的方式 - 它应该是 sockaddr_in

以这种方式解决结构命名的一种常见方法是像这样定义它们:

typedef struct _struct_name
{
/* ... */
} structname;

然后 structname 可以用作没有 struct 限定符的类型。您也不必在结构的定义上执行此操作,您可以稍后再执行。

所以,简短的回答是 socketaddr_in 在 POSIX 中不作为结构存在 - 它是 sockaddr_in

关于C套接字错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11063563/

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