gpt4 book ai didi

c - 数组初始化时 GDB 报告 "no symbol in current context"

转载 作者:行者123 更新时间:2023-12-02 03:14:00 27 4
gpt4 key购买 nike

我正在尝试初始化一个大小为 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 是 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 中有一个实现在某些情况下可以工作,但它被认为不够好,不适合放在主干中。

关于c - 数组初始化时 GDB 报告 "no symbol in current context",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19116709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com