gpt4 book ai didi

c - 将已定义结构的指针初始化为全局变量

转载 作者:行者123 更新时间:2023-11-30 17:16:52 25 4
gpt4 key购买 nike

我想为不同的 header 结构指针保留内存以便填充它,如下所示:

struct  icmp      *_icmp_hdr = (struct icmp *) Smalloc(hs_icmp, 0);   
struct icmp6_hdr *_icmp6 = (struct icmp6_hdr *) Smalloc(hs_icmp6, 0);
struct ip *_ip_hdr = (struct ip *) Smalloc(hs_ip, 0);
struct ip6_hdr *_ip6_hdr = (struct ip6_hdr *) Smalloc(hs_ip6, 0);
union data_err *_payload = (union data_err *) Smalloc(s_payload, 0);

当 header 结构的大小为:struct icmp, icmp6_hdr, ip...

时就会出现问题
  1. 如图所示,我使用 sizeof() 运算符(例如.#define hs_icmp sizeof(struct icmp))。

当我编译时,每个头结构指针都会出现错误,但我不知道如何解决它,例如:

error: initializer element is not constant
struct icmp *_icmp_hdr = (struct icmp *) Smalloc(hs_icmp, 0);
^

最佳答案

不能将函数调用作为全局变量初始化表达式的一部分。

这就是错误消息告诉您的内容。

结构体的大小与之无关(并且结构体的大小实际上不能为 0)。

关于c - 将已定义结构的指针初始化为全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29539140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com