2010-07-21 138 views
1

的编译警告:“IPPROTO_TCP”重新定义警告:这是以前的定义

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 

当我得到这个警告的位置下面是错误refered以下部分:

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

你能说得清的文本错误 感谢 遗憾的文件这只是部分地方错误accurs 的unixwin.h和server.c是运行时公司提供给我们的文件,用于将运行时链接到当前的linux glibc版本,in.h是与 一起提供的linux文件OpenSUSE 11.0 如果您查看错误和行号我在这里选择并粘贴了什么。 感谢您的帮助

+0

呜呜......所以,你使用的是被定义为自己的价值观宏?它生病了...... – 2010-07-21 09:47:07

+1

为什么你需要重新定义unixwin.h中的所有东西? – 2010-07-21 10:23:06

+0

[warning:“IPPROTO_TCP”重新定义警告:这是以前定义的位置]的可能重复(http://stackoverflow.com/questions/3297960/warning-ipproto-tcp-redefined-warning-this-is-the -d-of-the-d) – 2010-07-21 11:14:08

回答

1

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

你只需要包括netinet/in.h中,你不需要再定义它为6

1

在你的文件的文件unixwin.h添加此

#ifndef IPPROTO_TCP 
#define IPPROTO_TCP 6 
#endif 

+0

感谢这有助于我认为其他人也会工作,但这是最容易做 谢谢 – 2010-07-22 14:20:22

2

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

我会尝试删除

#define IPPROTO_TCP 

...和...插入

#include <netinet/in.h> 
相关问题