프로젝트 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;
컴파일 타임에 경고가 표시됩니까? '-Wall'로 컴파일하고 있는지 확인하십시오. 'struct in_addr'의 정의에 문제가있는 것처럼 보입니다. –
동작을 나타내는 [SSCCE] (http://sscce.org/)를 포함시킬 수 있습니까? – NPE
아마도'struct'는 여러분이 말하는 것과 다르며 유연한 배열 멤버를 가지고 있습니다 (https://en.wikipedia.org/wiki/Flexible_array_member) –