私は組み込みシステムラボ用の有限状態マシンを作成しています。コンパイラ(私はARMのキールを使用しています)は、私の構造体のインスタンスの配列を宣言しようとすると文句を言っています。私は何を間違えたのですか?構造体インスタンスの配列を作成する[C]
私のコード(の一部):
struct State {
unsigned long OutCars;
unsigned long OutWalk;
unsigned long Time;
unsigned long Next[8];
};
typedef const struct State SType;
SType FSM[11] = {
{0x0C, PF1, 100, {goW, goW, waitW, waitW, waitW, waitW, waitW, waitW} },
{0x14, PF1, 50, {goW, goW, goS, goS, goWa, goWa, goWa, goWa} },
{0x21, PF1, 100, {goS, waitS, goS, waitS, waitS, waitS, waitS, waitS} },
{0x22, PF1, 50, {goS, goW, goS, goW, goWa, goW, goWa, goW} },
{0x24, PF3, 100, {goWa, off1, off1, off1, goWa, off1, off1, off1} },
{0x24, OFF, 50, {on1, on1, on1, on1, on1, on1, on1, on1} },
{0x24, PF1, 50, {off2, off2, off2, off2, off2, off2, off2, off2} },
{0x24, OFF, 50, {on2, on2, on2, on2, on2, on2, on2, on2} },
{0x24, PF1, 50, {off3, off3, off3, off3, off3, off3, off3, off3} },
{0x24, OFF, 50, {on3, on3, on3, on3, on3, on3, on3, on3} },
{0x24, PF1, 50, {goWa, goW, goS, goS, goWa, goW, goS, goS} },
};
エラーメッセージ:
...
TableTrafficLight.c(155): error: #67: expected a "}"
{0x0C, PF1, 100, {goW, goW, waitW, waitW, waitW, waitW, waitW, waitW} },
...
編集:私は、セミコロンで私の#define
文を終了しましたが判明します。おっとっと。学んだ教訓。
あなたが示されたコードは何も問題はありません。 (もちろん、これらの定数をどのように定義したかはわかりません)。私はそのコードと関連する定義を別々のファイルに入れ、そのファイルを単独でコンパイルすることをお勧めします。多くの場合、Cコンパイラによって出されたエラーメッセージは、ファイルの前のエラー(セミコロンがないなど)によって引き起こされます。 – user3386109
コンパイラのエラー/警告は、ソースの特定の行(ここでは155)を参照しています。これはどのラインであるかを明確にする必要があります。 – alk
@alkエラーメッセージの下に表示される行は、配列の初期化の最初の行に表示されます。 – user3386109