gpt4 book ai didi

c - 如何引用变长结构

转载 作者:行者123 更新时间:2023-11-30 15:50:55 24 4
gpt4 key购买 nike

由于我使用了灵活的数组成员(“此行”),下面的代码拒绝在 SDCC 中编译。

/** header of string list */
typedef struct {
int nCount;
int nMemUsed;
int nMemAvail;
} STRLIST_HEADER;

/** string list entry data type */
typedef struct {
int nLen;
char str[]; // This line
} STRLIST_ENTRY;

/** string list data type */
typedef struct {
STRLIST_HEADER header;
STRLIST_ENTRY entry[]; // This line
} STRLIST;

int main()
{
return 0;
}

但是,我必须访问的数据已经以这种方式设置(我通过指针访问现有内存,而不是破坏堆栈),并且使用结构指针可以生成非常干净的代码。不幸的是 SDCC 不喜欢这样。我可以在代码中引用可以干净编译的内存结构的替代方法是什么?

最佳答案

通常的方法是给数组成员一个大小:

typedef struct {
int nLen;
char str[1];
} STRLIST_ENTRY;

这让编译器高兴。

编辑:您可以使用 --std-c99--std-sdcc99 开关让 SDCC 理解您的原始代码吗?

关于c - 如何引用变长结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15487980/

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