[英]How to initialize struct with anonymous array
我正在尝试使用匿名数组初始化创建嵌套结构:
struct CIpv6Address {
uint16_t* address;
};
struct CIpv6Cidr {
CIpv6Address* address;
uint16_t cidr;
};
CIpv6Cidr cIpv6Cidr1{
CIpv6Address {
(uint16_t[]){0xfdaa, 0, 0, 0, 0, 0, 0, 1};
},
64
};
但我得到:
错误:获取临时数组的地址 (uint16_t[]){0xfdaa, 0, 0, 0, 0, 0, 0, 1};
并且
错误:“{”令牌 CIpv6Address { 之前的预期主表达式
第一个错误我有点知道为什么。 但我不想用new
分配一个数组,因为它需要在之后以某种方式delete
。 有没有一种简单的方法可以简单地在那里放一个小地址?
对于第二个错误,我不知道
这不是您在 C 中初始化变量的方式。 在 C 中,初始化的形式类似于type variable = value
- 在变量名称和{
之间必须有一个=
。 此外,如果不使用typedef
,您必须在名称前使用关键字struct
。
如何使用匿名数组初始化结构
您可以使用复合文字。 在文件 scope 复合文字具有 static 存储持续时间,但在块 scope 它们具有自动存储持续时间 - 与往常一样,您必须注意对象的生命周期。 您可以使用godbolt链接:
#include <stdint.h>
struct CIpv6Address {
uint16_t* address;
};
struct CIpv6Cidr {
struct CIpv6Address* address;
uint16_t cidr;
};
struct CIpv6Cidr cIpv6Cidr1 = {
&(struct CIpv6Address){
(uint16_t[]){0xfdaa, 0, 0, 0, 0, 0, 0, 1},
},
64
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.