当前位置: 技术问答>linux和unix
有关ip.h的include问题(百分在线等)
来源: 互联网 发布时间:2015-04-19
本文导语: 各位好 我在做一个项目 里面需要用到 iphdr结构 我需要include ip.h文件 但当我在自己的 .h文件里include linux/ip.h的时候 她提示重复定义的错误 可是我除了linux/ip.h什么.h都没有include 但在.c文件里include ip.h就没有问题...
各位好 我在做一个项目 里面需要用到 iphdr结构
我需要include ip.h文件
但当我在自己的 .h文件里include linux/ip.h的时候
她提示重复定义的错误 可是我除了linux/ip.h什么.h都没有include
但在.c文件里include ip.h就没有问题
这是为什么?
等待...
我需要include ip.h文件
但当我在自己的 .h文件里include linux/ip.h的时候
她提示重复定义的错误 可是我除了linux/ip.h什么.h都没有include
但在.c文件里include ip.h就没有问题
这是为什么?
等待...
|
奇怪,我试了一下,咋没这种情况?
要不你试试: #include
要不你试试: #include
|
不客气!不知道你试过这个没有
/* yourheader.h*/
#ifndef _YOUR_HEADER_H
#define _YOUR_HEADER_H
/* yourheader.h*/
#ifndef _YOUR_HEADER_H
#define _YOUR_HEADER_H
|
你的.h是不是包含在多个头文件里?
|
要不你把相关的include宏贴出来
大家帮你分析分析?
大家帮你分析分析?
|
to
|
linux/ip.h是内核一级的吧(不是很肯定,猜测)
或者你可以自己定义IP头的结构,不一定非要包含它的头文件不可啊
#include
typedef struct _IPHdr
{
#if defined(WORDS_BIGENDIAN)
u_int8_t ip_v:4,
ip_hl:4;
#else
u_int8_t ip_hl:4,
ip_v:4;
#endif
u_int8_t ip_tos;
u_int16_t ip_len;
u_int16_t ip_id;
u_int16_t ip_off;
u_int8_t ip_ttl;
u_int8_t ip_p;
u_int16_t ip_csum;
struct in_addr ip_src;
struct in_addr ip_dst;
} IPHdr;
或者你可以自己定义IP头的结构,不一定非要包含它的头文件不可啊
#include
typedef struct _IPHdr
{
#if defined(WORDS_BIGENDIAN)
u_int8_t ip_v:4,
ip_hl:4;
#else
u_int8_t ip_hl:4,
ip_v:4;
#endif
u_int8_t ip_tos;
u_int16_t ip_len;
u_int16_t ip_id;
u_int16_t ip_off;
u_int8_t ip_ttl;
u_int8_t ip_p;
u_int16_t ip_csum;
struct in_addr ip_src;
struct in_addr ip_dst;
} IPHdr;