2

このコードの何が問題になっていますか?

#include "stdio.h"

typedef int type1[10];

typedef type1 *type2;

typedef struct {
    int field1;
   type2 field2;
} type3;

typedef type3 type4[5];

int main() {    
   type4 a;
   a[0].(*field2[3]) = 99;  // Line 16
   return 0;
}

取得: main.c:16:10: エラー: <(> トークンの前に識別子が必要です

Gcc バージョン: gcc (GCC) 4.7.2

4

3 に答える 3

6

コンパイラ エラーは、何が問題なのかを正確に示しています。

<(> トークンの前に予想される識別子

任意の式ではなく、名前 (識別子) を使用してのみ構造体メンバーにアクセスできます。

于 2013-05-16T19:48:11.443 に答える
1

書籍の正誤表を確認してください。

p。18、l。-7 正しい式は(*a[0].field2)[3] = 99; です。

アンドリュー・リー 12/31/10

20 年以上前に最初に出版された本に、去年だけ見つかった 12 の誤り (重大なものもあります!) があることは、良い兆候なのか悪い兆候なのか、私にはわかりません。

この本は古いかもしれませんが、Jeff Ullman は非常に尊敬されています。何十年も前に彼が書いた Compiler Design の本を読んで頭がいっぱいになったのを覚えています...

于 2013-05-16T21:07:56.253 に答える