gpt4 book ai didi

struct - 如何在 D 中初始化全局结构数组?

转载 作者:行者123 更新时间:2023-12-01 09:10:36 25 4
gpt4 key购买 nike

为了帮助我用 D 问题 (=p) 填充 SO,我遇到了另一个问题;全局初始化结构数组。观察:

struct A
{
int a;
float b;
}

A[2] as;
as[0] = {0, 0.0f};
as[1] = {5, 5.2f};

void main() {}

结果:

$ dmd wtf.d 
wtf.d(8): no identifier for declarator as[0]
wtf.d(9): no identifier for declarator as[1]

查看 Digital Mars 上的文档,我真的看不到任何对我来说完全明显的东西,所以我再次转向 Stack Overflow 的勇敢居民!我猜错误消息与真正的问题没有太大关系,因为 [0] is 肯定是一个标识符(但 dmd 认为它是一个声明符,哪个 AFAICT 正在查看 docs ,不是)?

最佳答案

我不认为你可以像这样在每个元素的基础上初始化元素。这行得通吗?

A[2] as = [
{0, 0.0f},
{5, 5.2f}
];

考虑一下,如果在您的示例中,您多次提到 as[0] 会发生什么:

as[0] = {0, 0.0f};
as[0] = {1, 1.0f};

as[0] 在程序初始化时的值是多少?这越来越像 statements 而不是 initialisers

请注意,在 D 中,您可以像这样在特定索引处初始化数组元素:

A[2] as = [
0: {0, 0.0f},
1: {5, 5.2f}
];

如果您有一个较大的数组(例如 A[10])并且只需要初始化一些元素,这将很有用。见 Arrays在 D 引用文档中了解更多信息。

关于struct - 如何在 D 中初始化全局结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1324942/

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