首页 > 应用开发 > > c++ 中0长度的数组
长度为0的数组的作用,纯c
#includestruct Test {
int len;
char data[0];
};
int main()
{
char str[] = "abc";
Test* t = (Test*)malloc(sizeof(struct Test) + sizeof(str));
t->len = sizeof(str);
memcpy(t->data, str, sizeof(str));
printf("len: %d\n", t->len);
printf("data: %s\n", t->data);
free(t);
}
很方便的保存带有不定长度的数据,譬如:网络的数据,图片,视频的数据
这个功能只是在gnu的扩展中,在vs中编译时有warnning的。
一般纯c中使用这个功能比较方便。
在vs中有告警为: warning C4200: 使用了非标准扩展: 结构/联合中的零大小数组,当 UDT 包含大小为零的数组时,无法生成复制构造函数或副本赋值运算符。在清楚这些告警的情况下,可以使用如下的方法去除这个告警
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2613/viewspace-3128616/ ,如需转载,请注明出处,否则将追究法律责任。