我试图初始化一个大小为ceil(buflen / 125.0)的数组,如下所示:

long long maxjpg = ceil(buflen/125.0);
long long arr[maxjpg];


我没有收到编译器错误,但是GDB报告“在当前上下文中没有符号'arr'”。我发现的唯一解决方法是将数字值硬编码为数组大小,如下所示:

long long arr[5];


我尝试使用不同的变量类型,使用const以及这些方法的任意组合进行转换。我知道ceil返回double,我也尝试过使用它。

初始化值并像下面这样打印它:

arr[0] = 25;
printf(pos 0 is %d\n", arr[0]);


输出:pos 0 is 25

修改后通过GDB打印arr[0]会导致“值已被优化”。

最少可复制的代码:

#include <math.h>

int main(void){

long long size = ceil(123.45);
long long arr[size];

return 0;
}


GDB Fedora 7.4.50.20120120-52.fc17

最佳答案

VLA当前在gdb中不起作用。有一个相关的错误公告以及一个正在进行的项目对此进行修复:https://sourceware.org/gdb/wiki/VariableLengthArray

archer.git中有一个在某些情况下可以实现的实现,但是认为它不够好。

10-04 14:02
查看更多