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[];
} STRLIST_ENTRY;
/** string list data type */
typedef struct {
STRLIST_HEADER header;
STRLIST_ENTRY entry[];
} STRLIST; // By the way, this is the line the error refers to.
int main()
{
return 0;
}
SDCCは次のエラーを出します:
$ sdcc -mz80 -S --std-c99 test.c
test.c:18: warning 186: invalid use of structure with flexible array member
test.c:18: error 200: field 'entry' has incomplete type
何が得られますか?このコードは、私が使用している他のz80コンパイラーは言うまでもなく、gccで問題なくコンパイルされます。
編集:関連しているように見えるこのSDCCバグを見つけました。誰かがそれがそうであるかどうか、そしてどのように説明できますか?