警告:“IPPROTO_TCP”重新定义了警告:这是前一个定义的位置

时间:2010-07-21 10:18:56

标签: c++ linux

编译时我收到此警告

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

以下是错误中引用的部分:

文件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

在文件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

在文件/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.  */

你能说出文字的错误吗? 谢谢 sORRY这只是错误诅咒的文件的部分 unixwin.h和server.c是运行时公司提供给我们链接的文件 当前linux glibc版本和in.h的运行时是附带的linux文件 OpenSUSE 11.0 如果您查看我选择并粘贴的错误和行号。 感谢所有帮助

3 个答案:

答案 0 :(得分:2)

你想用文件“unixwin.h”做什么?看起来它应该是来自系统头文件的#defines。

我会尝试删除

#define IPPROTO_TCP

...并插入......

#include <netinet/in.h>

答案 1 :(得分:1)

您正在unixwin.h第23行重新定义IPPROTO_TCP,这是一个已经从netinet / in.h获得的宏。

您只需要包含netinet / in.h,您不需要再次将其定义为6。

答案 2 :(得分:1)

添加此

#ifndef IPPROTO_TCP
#define IPPROTO_TCP 6
#endif

在您的文件文件unixwin.h中。