• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dlaczego kompilator wywala mi błędy?

Object Storage Arubacloud
0 głosów
95 wizyt
pytanie zadane 22 listopada 2020 w C i C++ przez tonn204 Mądrala (7,440 p.)
zamknięte 22 listopada 2020 przez tonn204

Cześć, dlaczego kompilator mówi mi, że redefiniuję  między innymi strukturę  sockaddr skoro normalnie używam jej w innej strukturze tak jak w przykładzie. Co robię nie tak, bo wszystko wydaje mi się tutaj poprawne.

Kod:

/*
	Initialise Winsock
*/

#include<stdio.h>
#include <stdint.h>
#include<winsock2.h>

struct addrinfo {
        int              ai_flags;     // AI_PASSIVE, AI_CANONNAME, etc.
        int              ai_family;    // AF_INET, AF_INET6, AF_UNSPEC
        int              ai_socktype;  // SOCK_STREAM, SOCK_DGRAM
        int              ai_protocol;  // use 0 for "any"
        size_t           ai_addrlen;   // size of ai_addr in bytes
        struct sockaddr *ai_addr;      // struct sockaddr_in or _in6
        char            *ai_canonname; // full canonical hostname

        struct addrinfo *ai_next;      // linked list, next node
    };

struct sockaddr {
        unsigned short    sa_family;    // address family, AF_xxx
        char              sa_data[14];  // 14 bytes of protocol address
    };

struct sockaddr_in {
        short int          sin_family;  // Address family, AF_INET
        unsigned short int sin_port;    // Port number
        struct in_addr     sin_addr;    // Internet address
        unsigned char      sin_zero[8]; // Same size as struct sockaddr
    };

struct in_addr {
        uint32_t s_addr; // that's a 32-bit int (4 bytes)
    };

struct sockaddr_in6 {
        uint16_t       sin6_family;   // address family, AF_INET6
        uint16_t       sin6_port;     // port number, Network Byte Order
        uint32_t       sin6_flowinfo; // IPv6 flow information
        struct in6_addr sin6_addr;     // IPv6 address
        uint32_t       sin6_scope_id; // Scope ID
    };

struct in6_addr {
        unsigned char   s6_addr[16];   // IPv6 address
    };

struct sockaddr_storage {
        sa_family_t  ss_family;     // address family

        // all this is padding, implementation specific, ignore it:
        char      __ss_pad1[_SS_PAD1SIZE];
        int64_t   __ss_align;
        char      __ss_pad2[_SS_PAD2SIZE];
    };

int main(int argc , char *argv[])
{
	WSADATA wsa;

	printf("\nInitialising Winsock...");
	if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
	{
		printf("Failed. Error Code : %d",WSAGetLastError());
		return 1;
	}

	printf("Initialised.");
   

	return 0;
}

Błąd:

||=== Build: Release in basicSocket (compiler: GNU GCC Compiler) ===|
D:\Networking in C\basicSocket\main.c|21|error: redefinition of 'struct sockaddr'|
D:\Program Files\CodeBlocks\MinGW\x86_64-w64-mingw32\include\psdk_inc\_ip_types.h|70|note: originally defined here|
D:\Networking in C\basicSocket\main.c|26|error: redefinition of 'struct sockaddr_in'|
D:\Program Files\CodeBlocks\MinGW\x86_64-w64-mingw32\include\psdk_inc\_ip_types.h|75|note: originally defined here|
D:\Networking in C\basicSocket\main.c|33|error: redefinition of 'struct in_addr'|
D:\Program Files\CodeBlocks\MinGW\x86_64-w64-mingw32\include\inaddr.h|17|note: originally defined here|
D:\Networking in C\basicSocket\main.c|34|error: expected ':', ',', ';', '}' or '__attribute__' before '.' token|
D:\Networking in C\basicSocket\main.c|41|error: field 'sin6_addr' has incomplete type|
D:\Networking in C\basicSocket\main.c|49|error: redefinition of 'struct sockaddr_storage'|
D:\Program Files\CodeBlocks\MinGW\x86_64-w64-mingw32\include\winsock2.h|260|note: originally defined here|
D:\Networking in C\basicSocket\main.c|50|error: unknown type name 'sa_family_t'|
||=== Build failed: 7 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

 

komentarz zamknięcia: Problem został rozwiązany

1 odpowiedź

0 głosów
odpowiedź 22 listopada 2020 przez Scheduler Mądrala (6,950 p.)
wybrane 22 listopada 2020 przez tonn204
 
Najlepsza
Bo robisz to co Ci mówi. Te struktury istnieją w plikach nagłówkowych które dodałeś. Usuń kod od lini 8 do 57, a program powinien zbudować się poprawnie(ewentualnie mogą być problemy z linkowaniem jak nie dodałeś biblioteki).
komentarz 22 listopada 2020 przez tonn204 Mądrala (7,440 p.)
Faktycznie .. dzięki za pomoc

Podobne pytania

0 głosów
2 odpowiedzi 215 wizyt
pytanie zadane 15 stycznia 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 1,531 wizyt
pytanie zadane 14 czerwca 2019 w C# przez Michał_Warmuz Mądrala (5,830 p.)
0 głosów
3 odpowiedzi 1,935 wizyt
pytanie zadane 12 sierpnia 2018 w Java przez must Bywalec (2,980 p.)

92,626 zapytań

141,485 odpowiedzi

319,841 komentarzy

62,006 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...