"This line"
以下のコードは、柔軟な配列メンバー( s)を使用しているため、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はこれを好みません。クリーンにコンパイルされるコードのメモリ構造を参照できる別の方法は何ですか?