warning: this is the location of the previous definition

This is a discussion on warning: this is the location of the previous definition within the C Programming forums, part of the General Programming Boards category; I am getting this warning when compiling In file included from server.c:48: unixwin.h:23:1: warning: "IPPROTO_TCP" redefined In file included from ...

  1. #1
    Registered User
    Join Date
    Jul 2010
    Posts
    1

    warning: this is the location of the previous definition

    I am getting this warning when compiling

    In file included from server.c:48:
    unixwin.h:23:1: warning: "IPPROTO_TCP" redefined
    In file included from server.c:42:
    /usr/include/netinet/in.h:45:1: warning: this is the location of the previous definition

    below is the sections refered to in the error:

    file unixwin.h

    15
    16 #ifndef FALSE
    17 #define FALSE 0
    18 #endif
    19
    20 #define SOCKADDR_IN struct sockaddr_in
    21 #define SOCKET_ERROR -1
    22 #define INVALID_SOCKET (SOCKET)(~0)
    23 #define IPPROTO_TCP 6
    24 #define LPSOCKADDR struct sockaddr *
    25 #define GMEM_MOVEABLE 1
    26 #define GMEM_FIXED 2
    27 #define GMEM_SHARE 3
    28 #define GPTR 4
    29 #define LPHOSTENT struct hostent *
    30 #define LPIN_ADDR struct in_addr *
    31
    32 #ifndef UINT
    33 #define UINT unsigned int
    34 #endif
    35

    In file server.c

    37
    38 #ifdef UNIX
    39 #include <sys/types.h>
    40 #include <sys/socket.h>
    41 #include <sys/ioctl.h>
    42 #include <netinet/in.h>
    43 #include <arpa/inet.h>
    44 #include <time.h>
    45 #ifndef FIONREAD
    46 #include <sys/filio.h>
    47 #endif
    48 #include "unixwin.h"
    49 #endif
    50

    And in file /usr/include/netinet/in.h

    30
    31 /* Standard well-defined IP protocols. */
    32 enum
    33 {
    34 IPPROTO_IP = 0, /* Dummy protocol for TCP. */
    35 #define IPPROTO_IP IPPROTO_IP
    36 IPPROTO_HOPOPTS = 0, /* IPv6 Hop-by-Hop options. */
    37 #define IPPROTO_HOPOPTS IPPROTO_HOPOPTS
    38 IPPROTO_ICMP = 1, /* Internet Control Message Protocol. */
    39 #define IPPROTO_ICMP IPPROTO_ICMP
    40 IPPROTO_IGMP = 2, /* Internet Group Management Protocol. */
    41 #define IPPROTO_IGMP IPPROTO_IGMP
    42 IPPROTO_IPIP = 4, /* IPIP tunnels (older KA9Q tunnels use 94). */
    43 #define IPPROTO_IPIP IPPROTO_IPIP
    44 IPPROTO_TCP = 6, /* Transmission Control Protocol. */
    45 #define IPPROTO_TCP IPPROTO_TCP
    46 IPPROTO_EGP = 8, /* Exterior Gateway Protocol. */
    47 #define IPPROTO_EGP IPPROTO_EGP
    48 IPPROTO_PUP = 12, /* PUP protocol. */
    49 #define IPPROTO_PUP IPPROTO_PUP
    50 IPPROTO_UDP = 17, /* User Datagram Protocol. */
    51 #define IPPROTO_UDP IPPROTO_UDP
    52 IPPROTO_IDP = 22, /* XNS IDP protocol. */
    53 #define IPPROTO_IDP IPPROTO_IDP
    54 IPPROTO_TP = 29, /* SO Transport Protocol Class 4. */
    55 #define IPPROTO_TP IPPROTO_TP
    56 IPPROTO_IPV6 = 41, /* IPv6 header. */
    57 #define IPPROTO_IPV6 IPPROTO_IPV6
    58 IPPROTO_ROUTING = 43, /* IPv6 routing header. */
    59 #define IPPROTO_ROUTING IPPROTO_ROUTING
    60 IPPROTO_FRAGMENT = 44, /* IPv6 fragmentation header. */

    Can you say where the text is wrong thanks

  2. #2
    Registered User hk_mp5kpdw's Avatar
    Join Date
    Jan 2002
    Location
    Northern Virginia/Washington DC Metropolitan Area
    Posts
    3,794
    Quote Originally Posted by BoschWakka
    below is the sections refered to in the error:
    First off, it's a warning not an error. I don't know what you may be using this for but it may (or may not) be innocuous.

    Quote Originally Posted by BoschWakka
    Can you say where the text is wrong thanks
    The text is not wrong. Your source file server.c includes the header /usr/include/netinet/in.h and then includes the header unixwin.h. Both those header files contain a #define IPPROTO_TCP entry at the lines indicated by the warning, the first defines it as IPPROTO_TCP and the later changes the definition to 6. The warning is simply saying "Hey you've defined this twice as different things! Is this what you really want?"

    If you know what you're doing then maybe you're fine with the warning. If you don't know what you're doing that could be more serious; you're program might not work correctly with the redefinition.
    "Owners of dogs will have noticed that, if you provide them with food and water and shelter and affection, they will think you are god. Whereas owners of cats are compelled to realize that, if you provide them with food and water and shelter and affection, they draw the conclusion that they are gods."
    -Christopher Hitchens

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. classes and objects
    By GoldenBoy in forum C++ Programming
    Replies: 12
    Last Post: 07-08-2010, 07:28 AM
  2. Console Font Size
    By bradszy in forum Windows Programming
    Replies: 34
    Last Post: 04-26-2008, 07:09 AM
  3. Using malloc
    By ulillillia in forum C Programming
    Replies: 34
    Last Post: 02-20-2008, 05:41 PM
  4. The Interactive Animation - my first released C program
    By ulillillia in forum A Brief History of Cprogramming.com
    Replies: 48
    Last Post: 05-10-2007, 02:25 AM
  5. Phantom redefinition
    By CodeMonkey in forum C++ Programming
    Replies: 6
    Last Post: 06-12-2005, 05:42 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21