ページ 11

龍神録プログラミングの館の第4章について

Posted: 2010年3月07日(日) 03:29
by mkk
第4章に書かれてある通りに書いたはずなのに

error C2371: 'ch_t' : 再定義されています。異なる基本型です。  struct.h

といったエラーが出ます;


これはどういう事なんでしょうか?

教えてください;

Re:龍神録プログラミングの館の第4章について

Posted: 2010年3月07日(日) 16:54
by Justy
 基本的にはエラーメッセージの通りで、型の再定義が行われたのでしょう。

 情報が不足しているので具体的にどこがどう、などとは言えませんが、
struct.hが二回以上インクルードされているとか、ch_tの定義が複数箇所のソースに書かれている等の理由で、
ch_tが複数定義されてしまっているのでしょう。

 もう一度修正箇所や本文を見直すか、プロジェクトファイル一式をダウンロードして見比べてみてください。

Re:龍神録プログラミングの館の第4章について

Posted: 2010年3月07日(日) 17:25
by mkk
お答ありがとうございます。

何度も確認してるのですが、なぜかできなくて;

//キャラクターに関する構造体
typedef struct{
int flag; //フラグ
int cnt; //カウンタ
int power; //パワー
int point; //ポイント
int score; //スコア
int num; //残機数
int mutekicnt; //無敵状態とカウント
int shot_mode; //ショットモード
int money; //お金
int img; //画像
int slow; //スローかどうか
double x,y; //座標
}ch_t;

これをstruct.hに書き込むとエラーが出るんですよ;;


確認してみましたが、ch_tの定義は他の箇所では書いていませんでした。

Re:龍神録プログラミングの館の第4章について

Posted: 2010年3月07日(日) 18:23
by Justy
 だとすると struct.hが複数箇所でインクルードされていませんか?

 試しに struct.hを
[color=#d0d0ff" face="monospace]#if !defined(STRUCT_H_INCLUDED)
#define STRUCT_H_INCLUDED


typedef struct
{
... // ch_tの定義
}ch_t;

#endif // !defined(STRUCT_H_INCLUDED)
[/color]
と先頭と末尾に #ifdef~#endifを入れたらどうなりますか?

Re:龍神録プログラミングの館の第4章について

Posted: 2010年3月08日(月) 01:58
by mkk
おぉ!できました!

ありがとうございました!m(_ _)m 画像

Re:龍神録プログラミングの館の第4章について

Posted: 2010年3月08日(月) 02:10
by Justy
 ということは、どこかで struct.hを2回以上インクルードしているということですね。
 そのまま #ifdef~#endifを入れたままでも構いませんが(むしろ本来は推奨)、
龍神録のソースと合わせるなら、どこで余計なインクルードをしているのか
探しておいた方がいいのかもしれません。