1. ホーム
  2. プログラミング言語
  3. C

C 構造体定義エラー: '['トークンの前に一次式があることが予想される

2022-01-21 11:05:38

構造体を定義して、それを参照するとき、突然多くのエラーを見つけることができます。

  1. typedef struct{
  2. int cost;
  3. int value;
  4. } item[N];// mistakenly thought this was a declared variable
  5. for(i=0,k=0; i<n; i++,k++)
  6. scanf("%d%d",&item[k].cost,&item[k].value);// report error

item[N]は変数名ではなく、型名です。型に対してインスタンスメソッドを呼び出すことはできません。

item[N]型の変数を作り、それにインスタンスを代入し、そのインスタンス上のメソッドを呼び出します。 

は、アサーションが欠落しており、その変数をアサーションする必要があることを意味します。構造体型名ではなく、構造体変数名でアサーションしてください。解決方法

  1. typedef struct{
  2. int cost;
  3. int value;
  4. } good;
  5. good item[N];
  6. for(i=0,k=0; i<n; i++,k++)
  7. scanf("%d%d",&item[k].cost,&item[k].value);