error: variable-sized object may not be initialized 59 | uint8_t in_buffer[in_buffer_size + AV_INPUT_BUFFER_PADDING_SIZE]={0};
时间: 2024-03-18 21:38:57 浏览: 186
这个错误是因为你试图使用变量大小的对象进行初始化。C语言不支持使用变量大小的对象进行初始化,因为在编译时无法确定其大小。
解决方法是使用动态分配内存的方式来创建这个数组,例如使用malloc函数来动态分配内存,然后再初始化数组。同时,你需要使用`AV_INPUT_BUFFER_PADDING_SIZE`来增加数组的大小,以便在数组的末尾添加额外的0,以满足某些库的要求。示例代码如下:
```
uint8_t *in_buffer = (uint8_t*)malloc(in_buffer_size + AV_INPUT_BUFFER_PADDING_SIZE);
memset(in_buffer, 0, in_buffer_size + AV_INPUT_BUFFER_PADDING_SIZE);
```
注意,使用完毕后,需要使用`free()`函数释放内存,避免内存泄漏。
相关问题
error: variable-sized object may not be initialized 60 | uint8_t in_buffer[in_buffer_size + 16]={0};
这个错误是因为你试图使用变量大小的对象进行初始化。C语言不支持使用变量大小的对象进行初始化,因为在编译时无法确定其大小。
解决方法是使用动态分配内存的方式来创建这个数组,例如使用malloc函数来动态分配内存,然后再初始化数组。示例代码如下:
```
uint8_t *in_buffer = (uint8_t*)malloc(in_buffer_size + 16);
memset(in_buffer, 0, in_buffer_size + 16);
```
注意,使用完毕后,需要使用`free()`函数释放内存,避免内存泄漏。
error: variable-sized object may not be initialized
错误:变量大小的对象可能无法初始化
这个错误通常是因为在定义变量时,使用了变量的大小作为其大小,例如:
int n;
scanf("%d", &n);
int arr[n] = {};
这里的arr是一个变量大小的数组,它的大小是n,但是在定义时使用了{n}进行初始化,这是不允许的。解决方法是使用循环来初始化数组,或者使用动态内存分配来创建数组。
阅读全文