关于error: ‘htons’ was not declared in this scope

本文详细介绍了在Ubuntu 10.10环境中,使用原始套接字PF_PACKET和SOCK_RAW获取IP数据时遇到的error:‘htons’wasnotdeclaredinthisscope的错误。通过分析问题,作者最终解决了htons函数与多个文件定义冲突导致的问题,并提供了有效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:ubuntu10.10

程序目的:利用原始套接字PF_PACKET和SOCK_RAW,获取IP等数据socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP))


问题:在编译时出现 error: ‘htons’ was not declared in this scope的错误

查了下有人说 htons包含在netinet/in.h文件中,

1 加#include<netinet/in.h>后编译,出现

/usr/include/netinet/in.h:34: error: conflicting declaration ‘IPPROTO_IP’

/usr/include/linux/in.h:26: error: ‘IPPROTO_IP’ has a previous declaration as ‘<anonymous enum> IPPROTO_IP’

.....等许多类似的错误

错误原因好像是与之前的某个文件定义的重复定义发生了冲突

2 将原先有的<linux/in.h>屏蔽之后,编译通过




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值