空块{}转换为struct

时间:2016-02-04 07:08:07

标签: c struct

我正在阅读一些C语言代码(似乎根据C11编写)关于从Github获得的编译器原理,链接如下。

https://github.com/rui314/8cc

我从main.c开始得到一些代码,如:

首先,结构:

typedef struct { void **body; int len; int nalloc; } Vector;

然后是一个宏:

#define EMPTY_VECTOR ((Vector){})

和最后:

static Vector *cond_incl_stack = &EMPTY_VECTOR;

我的问题是,如果可以将空块转换为结构并分配给指针,我会编写一些代码进行测试:

Vector v=(Vector){}; Vector a[3]={};

并且Qt5中没有合规

1 个答案:

答案 0 :(得分:5)

在任何版本的C中都不允许使用空的初始化列表。

我相信这是一个GNU非标准扩展。不要使用它。如果您想要标准等效项,请初始化至少一个元素:

Vector v = {0};

同样适用于复合文字:

Vector v = (Vector){0};

编辑:引用标准:

(6.7.9) initializer-list:
        designationopt initializer
        initializer-list , designationopt initializer