空块{}转换为struct

cha*_*aox 1 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中没有合规性

Lun*_*din 5

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

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

Vector v = {0};
Run Code Online (Sandbox Code Playgroud)

复合文字同样如此:

Vector v = (Vector){0};
Run Code Online (Sandbox Code Playgroud)

编辑:引用标准:

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