IAR Systems の EWARM 6.6 を使用していますが、説明できない次のコンパイル エラーが発生します。
void testFunc(uint8_t* buf, uint8_t length)
{
struct
{
uint8_t start;
uint8_t data[length];
uint8_t stop;
}longframe;
longframe.start = 1;
memcpy( longframe.data, buf, length );
longframe.stop = 2;
}
コンパイラは、エラー メッセージ「エラー [Pe028]: 式には定数値が必要です」をスローします。変数が静的またはグローバルに宣言されている場合、これは許容されますが、この場合はわかりません。GCC コンパイラで同じコードを試したところ、問題なく動作しました。誰でもアイデアはありますか?
批判された部分は、構造体内のデータの長さです。長さは一定でなければならないと言われています。