プログラムの分割について
プログラムの分割について
この前脱出ゲームの事で質問したものですが。
とりあえず完成してプログラムがひとつのファイルだったんですが、
次ぎ作るゲームのために分割の練習をしようと思い、
メインの処理とその他とextern宣言のファイルに分けたんですが、
なぜか上手くいかずいろいろやってみてもできません。
またどこが悪いのか分からずファイルのUPなんですがよろしくお願いします。
プログラムの中身を動かしたりしていろいろやっていたのでちょっとぐちゃぐちゃかもしれません。
とりあえず完成してプログラムがひとつのファイルだったんですが、
次ぎ作るゲームのために分割の練習をしようと思い、
メインの処理とその他とextern宣言のファイルに分けたんですが、
なぜか上手くいかずいろいろやってみてもできません。
またどこが悪いのか分からずファイルのUPなんですがよろしくお願いします。
プログラムの中身を動かしたりしていろいろやっていたのでちょっとぐちゃぐちゃかもしれません。
Re:プログラムの分割について
>>脱出さん
ファイルを添付されていないのではないでしょうか?
あと、何が悪いのか・・・エラーはどういうのが出たのか
という情報も一緒に添えて頂くとありがたいと思われます。
ファイルを添付されていないのではないでしょうか?
あと、何が悪いのか・・・エラーはどういうのが出たのか
という情報も一緒に添えて頂くとありがたいと思われます。
Re:プログラムの分割について
URL張るの忘れてましたすいません;;
http://www1.axfc.net/uploader/Ne/so/465 ... 1%E5%87%BA
1>hoka.cpp
: error C2065: 'Mouse_t' : 定義されていない識別子です。
: error C2065: 'Nezumi' : 定義されていない識別子です。
: fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
1>脱出ゲーム.cpp
: error C2065: 'Mouse_t' : 定義されていない識別子です。
: error C2065: 'Nezumi' : 定義されていない識別子です。
: fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
何が悪いのかはからないです;;
エラーの気になるとこをいろいろやってみたりしたんですが全くできず;;
こんな感じで分かりますか?
http://www1.axfc.net/uploader/Ne/so/465 ... 1%E5%87%BA
1>hoka.cpp
: error C2065: 'Mouse_t' : 定義されていない識別子です。
: error C2065: 'Nezumi' : 定義されていない識別子です。
: fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
1>脱出ゲーム.cpp
: error C2065: 'Mouse_t' : 定義されていない識別子です。
: error C2065: 'Nezumi' : 定義されていない識別子です。
: fatal error C1903: 直前のエラーを修復できません。コンパイルを中止します。
何が悪いのかはからないです;;
エラーの気になるとこをいろいろやってみたりしたんですが全くできず;;
こんな感じで分かりますか?
Re:プログラムの分割について
そのエラーのはMouse_t,Nezumiが定義されていないから出てきます。
この行をMouse_t,Nezumiが宣言された後に記述すれば回避できます。
コンパイルの際、上からコードを見ていくので。
これが通ってもすぐ次のエラーがずらーっと出てきますが、
それはまた試行錯誤してみてください。
この行をMouse_t,Nezumiが宣言された後に記述すれば回避できます。
コンパイルの際、上からコードを見ていくので。
これが通ってもすぐ次のエラーがずらーっと出てきますが、
それはまた試行錯誤してみてください。
Re:プログラムの分割について
上の方に持って行きましたが今度は違うのが出てきました;;
未解決とはどうゆう事なんでしょうか?
1>hoka.obj : error LNK2001: 外部シンボル ""struct save_data_t save_data" (?save_data@@3Usave_data_t@@A)" は未解決です。
1>hoka.obj : error LNK2001: 外部シンボル ""int sentaku" (?sentaku@@3HA)" は未解決です。
1>hoka.obj : error LNK2001: 外部シンボル ""struct Mouse_t Mouse" (?Mouse@@3UMouse_t@@A)" は未解決です。
1>脱出ゲーム.obj : error LNK2019: 未解決の外部シンボル "struct Mouse_t Mouse" (?Mouse@@3UMouse_t@@A) が関数 _WinMain@16 で参照されました。
1>hoka.obj : error LNK2001: 外部シンボル ""int kuro" (?kuro@@3HA)" は未解決です。
↑この一行は画像と音楽などのが他にもいっぱい出てました。
未解決とはどうゆう事なんでしょうか?
1>hoka.obj : error LNK2001: 外部シンボル ""struct save_data_t save_data" (?save_data@@3Usave_data_t@@A)" は未解決です。
1>hoka.obj : error LNK2001: 外部シンボル ""int sentaku" (?sentaku@@3HA)" は未解決です。
1>hoka.obj : error LNK2001: 外部シンボル ""struct Mouse_t Mouse" (?Mouse@@3UMouse_t@@A)" は未解決です。
1>脱出ゲーム.obj : error LNK2019: 未解決の外部シンボル "struct Mouse_t Mouse" (?Mouse@@3UMouse_t@@A) が関数 _WinMain@16 で参照されました。
1>hoka.obj : error LNK2001: 外部シンボル ""int kuro" (?kuro@@3HA)" は未解決です。
↑この一行は画像と音楽などのが他にもいっぱい出てました。
Re:プログラムの分割について
DxLibがないとコンパイルできないですね;
というわけで、自分のPCにDxLib導入してみました。
「KIHON.h」内で
extern int GetHitMouseStateAll_2(Mouse_t *Nezumi);
と宣言されていますが、この時点では kazuoniさんが仰る通り
Mouse_t が存在しませんので、Mouse_tの宣言を
extern int GetHitMouseStateAll_2(Mouse_t *Nezumi); の上に記述すれば問題は解決されます。
エラーまた出てきますけども;
というわけで、自分のPCにDxLib導入してみました。
「KIHON.h」内で
extern int GetHitMouseStateAll_2(Mouse_t *Nezumi);
と宣言されていますが、この時点では kazuoniさんが仰る通り
Mouse_t が存在しませんので、Mouse_tの宣言を
extern int GetHitMouseStateAll_2(Mouse_t *Nezumi); の上に記述すれば問題は解決されます。
エラーまた出てきますけども;
Re:プログラムの分割について
BEMANIさん
わざわざDxLibの導入して貰ってすいません。
extern int GetHitMouseStateAll_2(Mouse_t *Nezumi);
の上に持って行きましたが、
上に書いてあるエラーが出ます;;
何が原因なのか全く分からないです;;
わざわざDxLibの導入して貰ってすいません。
extern int GetHitMouseStateAll_2(Mouse_t *Nezumi);
の上に持って行きましたが、
上に書いてあるエラーが出ます;;
何が原因なのか全く分からないです;;
Re:プログラムの分割について
「C言語 分割ファイル」
とググれば参考コードはたくさん出てきますよ。
参考までに。
ttp://homepage3.nifty.com/mmgames/c_guide/20-02.html
とググれば参考コードはたくさん出てきますよ。
参考までに。
ttp://homepage3.nifty.com/mmgames/c_guide/20-02.html
Re:プログラムの分割について
シューティングゲームの館
を見てやりました。
kazuoniさんのも見てみましました。
ダウンロードできませんでしたか。
一応パスは「脱出」です。すでに書いてあるとおもいますが。
できたプログラムを分割するより新しいのでやった方がいいですかね?
を見てやりました。
kazuoniさんのも見てみましました。
ダウンロードできませんでしたか。
一応パスは「脱出」です。すでに書いてあるとおもいますが。
できたプログラムを分割するより新しいのでやった方がいいですかね?
Re:プログラムの分割について
失礼かと思いましたが、まとめるために
ファイル構成を少々変更させてもらいました。
問題点は以下の2点です。
・グローバル変数等を全て extern していた。
・a,b, から始まる変数群をメイン cpp 内とヘッダーで宣言していた。
ファイル構成を少々変更させてもらいました。
問題点は以下の2点です。
・グローバル変数等を全て extern していた。
・a,b, から始まる変数群をメイン cpp 内とヘッダーで宣言していた。
Re:プログラムの分割について
アップローダ若しくはブラウザに問題があったようです。
リンクを使用し、ファイルの受信に成功しました。
それで、ぱっと見た感じ、
>extern指定子は、外部で明示的に宣言された変数又は関数に対して使用できます。
>すべてのファイルでextern宣言されてしまっていませんか?
やはりこの通りでした。
KIHON.hには、extern宣言のみが記述されています。
しかし、変数の実体はどこにも宣言されていないようです。
「龍神録を参考にしているか」を聞いた真意は「GLOBALマクロを使っているか」ということなのでした。
龍神録ではグローバル変数(とそれを参照するモジュール)についてマクロを使って回避しています。
リンクを使用し、ファイルの受信に成功しました。
それで、ぱっと見た感じ、
>extern指定子は、外部で明示的に宣言された変数又は関数に対して使用できます。
>すべてのファイルでextern宣言されてしまっていませんか?
やはりこの通りでした。
KIHON.hには、extern宣言のみが記述されています。
しかし、変数の実体はどこにも宣言されていないようです。
「龍神録を参考にしているか」を聞いた真意は「GLOBALマクロを使っているか」ということなのでした。
龍神録ではグローバル変数(とそれを参照するモジュール)についてマクロを使って回避しています。
Re:プログラムの分割について
グローバル変数という物が全然わからずすいません;;
グローバル変数について調べてみようと思います。
SooAさんのプログラムで出来ました。
皆さん
ありがとうございます。
グローバル変数について調べてみようと思います。
SooAさんのプログラムで出来ました。
皆さん
ありがとうございます。
Re:プログラムの分割について
覚えてしまえば簡単ですよ^^
まず、
構造体は変数の宣言に使用するのだから変数より先に記述します、
変数は関数で使用するのだから関数より先に記述します、
そうすると自然に 構造体→変数→関数 という順番ができます。
グローバル変数については
確か2~4辺りを読むと以下の記述に関して書かれていると思います。
#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif
これは簡単に説明すると
GLOBAL_INSTANCE されていたら何もしない
(GLOBALという文字を無いものとして扱う)、
されていなかったら GLOBAL を extern に変更という意味で、
メインから呼び出す一度目だけグローバル宣言し
他のファイルから呼び出すときは extern するというものです。
この二つを覚えておけば後はサクサク進むと思うので
がんばってください。
まず、
構造体は変数の宣言に使用するのだから変数より先に記述します、
変数は関数で使用するのだから関数より先に記述します、
そうすると自然に 構造体→変数→関数 という順番ができます。
グローバル変数については
確か2~4辺りを読むと以下の記述に関して書かれていると思います。
#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif
これは簡単に説明すると
GLOBAL_INSTANCE されていたら何もしない
(GLOBALという文字を無いものとして扱う)、
されていなかったら GLOBAL を extern に変更という意味で、
メインから呼び出す一度目だけグローバル宣言し
他のファイルから呼び出すときは extern するというものです。
この二つを覚えておけば後はサクサク進むと思うので
がんばってください。
Re:プログラムの分割について
めちゃくちゃ分かりやすいです!
調べてたんですがなんかよく分からず。
なんて調べればよかったのかも分からずでしたw
SooAさんありがとうござます!
調べてたんですがなんかよく分からず。
なんて調べればよかったのかも分からずでしたw
SooAさんありがとうござます!
Re:プログラムの分割について
バイト行ってる間に解決されていましたか;
しかも、自分の解答もあんま意味なかったみたいで;
もうしわけないですorz
制作頑張ってください~
しかも、自分の解答もあんま意味なかったみたいで;
もうしわけないですorz
制作頑張ってください~