ページ 1 / 1
龍神録プログラミングの館の第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を入れたままでも構いませんが(むしろ本来は推奨)、
龍神録のソースと合わせるなら、どこで余計なインクルードをしているのか
探しておいた方がいいのかもしれません。