下面的代码拒绝在 SDCC 中编译,因为我使用了灵活的数组成员("This line"
s)。
/** 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 不喜欢这样。我可以在代码中引用可以干净编译的内存结构的另一种方法是什么?