ページ 11

龍神録プログラム

Posted: 2009年10月06日(火) 23:24
by piyoyo
龍神録プログラムで”敵にショット撃たせよう”の項目でSHOT_BULLET_MAXが定義されてないとでます。
見直しても説明通りできている見たいなんですがなぜでしょう?
エラーメッセージは↓のように出ました。

\test project\project\1章\mydat\include\struct.h(58) : error C2065: 'SHOT_BULLET_MAX' : 定義されていない識別子です。

Re:龍神録プログラム

Posted: 2009年10月07日(水) 10:56
by ちゃお
define.hの方にSHOT_BULLET_MAXを定義していないからだと思います。

あと、struct.hでSHOT_BULLET_MAXを使っているなら、それ以前にdefine.hを宣言してください。

Re:龍神録プログラム

Posted: 2009年10月07日(水) 21:20
by piyoyo
うーん
define.hでは定義されています。
struct.hの宣言は#include "define.h"でいいんですか?
すると↓のようなエラーがでます。
test project\project\1章\mydat\include\define.h(10) : fatal error C1014: インクルード ファイルが多すぎます : 深さ = 1024

Re:龍神録プログラム

Posted: 2009年10月08日(木) 01:23
by ぽよ
ちゃおさんがおっしゃっているのはdefine.hにおいて
>#include "struct.h"
↑のまえに
>#define SHOT_BULLET_MAX 1000
↑を書く必要がある、ということだと思います。

おそらく問題があるであろうdefine.hの一例を添付しました。確認してください
いちおう言っておきますが、あなたの書いたstruct.hの#include "define.h"は消してくださいね。
龍神録プログラムの館ではソースを公開していますのでそれをダウンロードしておき、わからない時はまずそちらを確認する事をおすすめします。

Re:龍神録プログラム

Posted: 2009年10月08日(木) 01:50
by conio
>>すると↓のようなエラーがでます。
>>test project\project\1章\mydat\include\define.h(10) : fatal error C1014: インクルード ファイルが多すぎます : 深さ = 1024

そのエラーは多分、無限インクルードをしているのではないでしょうか。
(名前は勝手に付けました)


下記のような構成になっているとします。
----------<Test.h>-------------
#include"Test.h"
#define SHOT_BULLET_MAX 1000
-------------------------------
----------<Main.cpp>-----------
#include<stdio.h>
#include"Test.h"

int main(void)
{

return(0);
}
-------------------------------

#includeは基本、単純な文字列置換をします。
なので、インクルードをすると、下記の様に変化します。
---------------------------------------
#include<stdio.h>
#include"Test.h"
#define SHOT_BULLET_MAX 1000


int main(void)
{

return(0);
}
---------------------------------------
で、また#include"Test.h"が出てくるので、さらに置換します。
---------------------------------------
#include<stdio.h>
#include"Test.h"
#define SHOT_BULLET_MAX 1000

#define SHOT_BULLET_MAX 1000

int main(void)
{

return(0);
}
---------------------------------------
さらにもう一度。
---------------------------------------
#include<stdio.h>
#include"Test.h"
#define SHOT_BULLET_MAX 1000

#define SHOT_BULLET_MAX 1000
#define SHOT_BULLET_MAX 1000

int main(void)
{

return(0);
}
---------------------------------------
見れば分かりますが、永遠に置換され続けます。
よって、深さが1024を超えてしまい、エラーとなります。

Re:龍神録プログラム

Posted: 2009年10月08日(木) 09:04
by toyo
--- define.h に以下を追加 ---

//敵1匹が持つ弾の最大数
#define SHOT_BULLET_MAX 1000

//一度に画面に表示できる敵の弾幕の最大数
#define SHOT_MAX 30

//ショットの種類の最大数
#define SHOT_KND_MAX 1

//効果音の種類の最大数
#define SE_MAX 100

//敵の行動パターンの最大数
#define ENEMY_PATTERN_MAX 11

↑をdefine.hに書いている
#include "struct.h"
の下に追加しているのではないでしょうか

#include "struct.h"
をdefine.hの一番下の行に移動しましょう

Re:龍神録プログラム

Posted: 2009年10月08日(木) 23:37
by piyoyo
toyoさんのやり方でやったら成功しました。皆さんご迷惑おかけしましたありがとうございます。