不允许初始化灵活数组成员

问题描述

我在灵活数组上发现了一个 GNU C documentation,他们说你可以这样初始化它们:

struct foo { int x; int y[]; };
struct bar { struct foo z; };

struct foo a = { 1,{ 2,3,4 } };        // Valid.
struct bar b = { { 1,4 } } };    // Invalid.
struct bar c = { { 1,{ } } };            // Valid.
struct foo d[1] = { { 1,4 } } };  // Invalid

但是当我尝试执行第一个有效案例(使用结构 a)时,gcc 抛出 error: Initialization of flexible array member is not allowed。那么这是不推荐使用的还是有另一种方法可以在没有 malloc 的情况下做到这一点?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)