• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:自己参照構造体のtypedef宣言とスコープ)

自己参照構造体のtypedef宣言とスコープ

このQ&Aのポイント
  • MinGWとgccでプログラムを組んでいます(OSはWin7です)。main.cpp、variable.h、function.hの3つのファイルからなり、variable.hで自己参照構造体とそれのtypedef宣言をしています。その後、function.hでこのHOGE型のポインタを受ける関数を宣言しています。しかし、main.cpp内で読み込み順にvariable.h、function.hを読み込んだ後にコンパイルエラーが発生してしまいます。
  • typedefのスコープの関係なのか、それ以外の問題なのか分からずに困っています。どなたかアドバイスをいただけないでしょうか。
  • この問題に関して煮詰まっているため、助言や解決策を求めています。どうかよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.5

ここにある情報だけではエラーを出せていないので, そのエラーが出る簡単な例を見せてもらえませんか?

その他の回答 (5)

  • colder
  • ベストアンサー率43% (30/69)
回答No.6

インクルードガードを失敗しているということはないですか? #ifndef VARIABLE_H .. と書くところを #ifdef VARIABLE_H .. と書いているとか

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.4

>それはさすがに知ってますよ。 >関数の宣言部分と本体部分の引数の箇所でエラーが出てます。 知ってるなら、なぜそのエラーメッセージも一緒に書かないんでしょうか。 エラーメッセージから抜粋したつもりになった情報(「コンパイルエラーがでます」とかは抜粋ですらない)を書かれるより、エラーメッセージそのものを書かれた方が有用な事は多いです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

あ, そうだ. エラーメッセージには「そのエラーがどのファイルの何行目で見つかったのか」が書いてあるんだけど, 知ってました?

trotrotron
質問者

補足

それはさすがに知ってますよ。 関数の宣言部分と本体部分の引数の箇所でエラーが出てます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

はっきり言って, 何ら参考にならない. 手元で variable.h typedef struct hoge HOGE; struct hoge{ int a,b; double x,y; HOGE *p1, *p2; }; function.h void hogehoge(HOGE *p1, HOGE *p2); main.cpp #include "variable.h" #include "function.h" int main() { hogehoge(0, 0); return 0; } として確かめたけど, そんなエラーは出なかった.

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

これだけだと何が悪いかわからんので, それぞれのファイルの中で関係する部分をもっと出してもらえませんか? あと, セミコロンがないのはなぜ?

trotrotron
質問者

補足

セミコロンは書き忘れでした(ソースコードにはあります) それと、それぞれの関連する部分といってもこれくらいなんです。 ・3つのファイルをmain.cppにまとめるとエラーは出なくなります。 ・HOGE *pをstruct hoge *pにしてもエラーは消えました(その代わり警告が出ましたが) ・variable.hをmain.cppに移動すると、『'HOGE' was not declared in this scope』とでます。 これで参考になりませんでしょうか。

関連するQ&A