【发布时间】:2017-03-04 06:42:19
【问题描述】:
我想要一个带有嵌入式数组缓冲区和指针的结构,它可以指向嵌入式缓冲区或外部缓冲区:
struct s {
char internal_buf[BUF_SIZE];
char *active_buf;
};
我想静态初始化(如在全局变量中)这个结构,使active_buf 字段指向同一个结构的internal_buf 字段。换句话说,类似于:
struct s inst = {
.internal_buf = {0},
.active_buf = .internal_buf, // Doesn't compile unfortunately
};
这可能吗?我正在使用 GCC。
【问题讨论】:
-
@EugeneSh.: 嗯?当然有可能!只是不使用 OP 使用的语法。
-
你为什么不试试呢?你的语法错了,但没问题。
-
@Olaf 真的吗?然后我要学习一些新东西,或者我错过了问题本身的含义..
-
@EugeneSh.:据我了解,OP 希望在初始化程序中将
internal_buf字段的地址设置为active_buf。 (OP:我故意不显示代码。如果您无法弄清楚自己,您将无法使用struct)。用=完成定义(有序列点)。 -
初始化器不是语句,而是定义的一部分。但是 - 正如我所写,
=处有一个序列点,因此该对象在该点是完整的。