0

申し訳ありませんが、この質問をしなければならないことを少し恥ずかしく思っています。C で -> コマンドを間違って使用している理由がわかりません。「x->y」が「(*x).y」と同等であることはわかっていますが、何らかの理由で、クラスの最初のプロジェクトで間違って使用しています。

私のプロジェクトには 28 個のエラーがあります。26 はこの誤解によるもので、2 つは C99 モード外での初期宣言による for ループによるものです。このコードを Unix マシンに転送してコンパイルする必要があるため、これらのエラーは問題になりません。発生しません。

私が得ている特定のエラーはこれです:

C:\Users\Nick\Documents\School\CS449\Programs\Project 1\EXIF Viewer\main.c|78|error:invalid type argument of '->' (have 'struct tag')|

26個のエラーのうち、すべてがこのように構造化されていますが、一部は(「構造体ヘッダー」を持っている)と言い、他の人は(「構造体タグ」を持っています)と言います。

この投稿の最後にコード全体を含めますが、関連する構造体宣言と呼び出しは次のように設定されています。

struct tag the_tag;//The reused tag

^これはグローバル構造体変数です

struct header intro; //Bytes 0-19 of the program

^これは int main(argc, **argv) のローカル構造体ヘッダーです{}

これらのエラーが発生する行の一部は次のとおりです。

56:  else if(intro->endianness[0] != 'I')
74:  if(the_tag->tag_identifier == (0x010F))
78:  printf("Manufacturer: %s\n", the_tag->data);
98:  else if(the_tag->tag_identifier == (0x08769))
125: else if(tagger->tag_identifier == 0x8827)

C でのこの逆参照子の私の理解が間違っている場所と、これらの呼び出しが期待どおりに機能する理由を説明してもらえますか? 私はかなり混乱しており、私のグーグル/検索スキルはイベントに関して何も見つけられませんでした. ご協力ありがとうございました。

ここに私のペーストビンがあります: http://pastebin.com/ck8ThFLG

4

1 に答える 1