【问题标题】:Incompatible types when assigning to type ‘struct in_addr’ from type 'unsigned int'从“unsigned int”类型分配给“struct in_addr”类型时的类型不兼容
【发布时间】:2016-03-25 20:40:49
【问题描述】:

我正在使用 Linux 进行编译。在struct ip(用于IPv4)中,当我尝试将值设为ip1.ip_dst = 0xffffffff; 时,出现以下错误:

错误:从类型'unsigned int' ip.ip_dst = 0xffffffff;`

我应该为struct in_addr 数据类型的变量赋予什么值?我该如何解决这个错误?

【问题讨论】:

  • 使用inet_aton 将点分十进制转换为struct in_addr 数据类型。查看inet_aton 的手册页以获取可用函数的完整列表。

标签: c linux ip-address ipv4


【解决方案1】:

我认为在 Linux 中,

typedef uint32_t in_addr_t;

struct in_addr {
    in_addr_t s_addr;
};

您可能希望将您的值转换为 (uint32_t)

阅读更多内容:http://linux.die.net/man/3/inet

【讨论】:

  • 投射哪个值,分配给什么?为什么要投射?
【解决方案2】:

in_addr 是一个具有单个 unsigned long 成员的结构:

struct in_addr ip_dest;
ip_dest.s_addr = 0xffffffffL;

【讨论】:

  • 即使这样也行不通。出现了同样的错误。这是:error: Incompatible types when assigning to type ‘struct in_addr’ from type ‘long int’
  • 此代码未分配给in_addr。请分享您尝试过的确切代码。
  • 他试图从 long int 分配给 struct in_addr,所以显然他的确切代码是这样的:struct in_addr ip;无符号我; ip = 我;启动器的简单错误。
猜你喜欢
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 2016-01-23
  • 2016-02-24
相关资源
最近更新 更多