【发布时间】:2015-04-09 12:56:45
【问题描述】:
我想为不同的头结构指针保留内存以填充它,如下:
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);
当标头结构的大小为:struct icmp, icmp6_hdr, ip... 时,问题就来了
- 我已经使用
sizeof()运算符(例如#define hs_icmp sizeof(struct icmp))为每个结构(例如hs_icmp, hs_icmp6, hs_ip, ...)定义了这个大小。
当我编译时,我得到每个头结构指针的错误,我不知道如何解决它,例如:
error: initializer element is not constant
struct icmp *_icmp_hdr = (struct icmp *) Smalloc(hs_icmp, 0);
^
【问题讨论】:
标签: c pointers memory struct network-programming