gpt4 book ai didi

c - 带有指向其他尚未声明的静态变量的指针的结构的静态初始化

转载 作者:行者123 更新时间:2023-12-01 23:52:07 25 4
gpt4 key购买 nike

C语法问题。

我希望做出如下声明:

struct thingy {
struct thingy* pointer;
}

static struct thingy thing1 = {
.pointer = &thing2
};

static struct thingy thing2 = {
.pointer = &thing1
};

我试过分别声明和初始化,如下所示:

struct thingy {
struct thingy* pointer;
}

static struct thingy thing1;
static struct thingy thing2;

thing1 = {
.pointer = &thing2
};

thing2 = {
.pointer = &thing1
};

但是我不确定是否可以单独声明和初始化静态变量

有没有一种方法可以让它们在编译时相互指向对方?

最佳答案

你快到了。您需要先“前向声明”(实际上,这是一个暂定定义,感谢 AndreyT!)静态实例,然后使用所需的指针初始化它们的定义。

static struct thingy thing1;
static struct thingy thing2;

static struct thingy thing1 = {
.pointer = &thing2
};

static struct thingy thing2 = {
.pointer = &thing1
};

从技术上讲,您只需要前向声明暂时定义thing2

关于c - 带有指向其他尚未声明的静态变量的指针的结构的静态初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25902646/

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