当前位置:  开发笔记 > 编程语言 > 正文

嵌套结构/数组初始化

如何解决《嵌套结构/数组初始化》经验,为你挑选了1个好方法。

我有一个包含另一个结构的数组的结构,它看起来像这样:

typedef struct bla Bla;
typedef struct point Point;

struct point
{
    int x, y;
};

struct bla
{
    int another_var;
    Point *foo;
};

我现在想在全球范围内初始化它们.它们旨在作为模块的描述.我尝试用c99复合文字做到这一点,但编译器(gcc)不喜欢它:

Bla test =
{
    0, (Point[]) {(Point){1, 2}, (Point){3, 4}}
};

我收到以下错误:

error: initializer element is not constant
error: (near initialization for 'test')

由于我不需要修改它,我可以根据需要在其中加入尽可能多的"const".有没有办法编译它?



1> Robert Gambl..:

您不需要每个元素的复合文字,只需创建一个复合文字数组:

Bla test =
{
    0, (Point[]) {{1, 2}, {3, 4}}
};

确保你编译-std=c99.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有