介绍
https://blog.csdn.net/sunlylorn/article/details/7544301
目的是为了在节省内存的情况下,用精简的代码访问到可变内存地址。其实代码理解起来也更方便。
相关的错误
伸缩数组成员必须放到最后
[root@10 test]# g++ -std=c++11 struct.c
struct.c:6:8: error: flexible array member ‘abc::a’ not at end of ‘struct abc’
char a[];
^
c99开始支持
在最新的gcc版本,这个限制看着已经去掉了。
c89编译也是没有问题;
[root@10 test]# gcc -std=c89 -Wpedantic struct.c
struct.c:8:6: warning: ISO C90 does not support flexible array members [-Wpedantic]
char a[];
这里也只是在pedantic的情况下出现一个警告,不会有编译错误。大家都还是喜欢这种定义。
举例
kernel
https://lore.kernel.org/lkml/20180814170904.GA1276