龍神録プログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
piyoyo

龍神録プログラム

#1

投稿記事 by piyoyo » 16年前

龍神録プログラムで”敵にショット撃たせよう”の項目でSHOT_BULLET_MAXが定義されてないとでます。
見直しても説明通りできている見たいなんですがなぜでしょう?
エラーメッセージは↓のように出ました。

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

ちゃお

Re:龍神録プログラム

#2

投稿記事 by ちゃお » 16年前

define.hの方にSHOT_BULLET_MAXを定義していないからだと思います。

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

piyoyo

Re:龍神録プログラム

#3

投稿記事 by piyoyo » 16年前

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

ぽよ

Re:龍神録プログラム

#4

投稿記事 by ぽよ » 16年前

ちゃおさんがおっしゃっているのはdefine.hにおいて
>#include "struct.h"
↑のまえに
>#define SHOT_BULLET_MAX 1000
↑を書く必要がある、ということだと思います。

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

conio

Re:龍神録プログラム

#5

投稿記事 by conio » 16年前

>>すると↓のようなエラーがでます。
>>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を超えてしまい、エラーとなります。

toyo

Re:龍神録プログラム

#6

投稿記事 by toyo » 16年前

--- 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の一番下の行に移動しましょう

piyoyo

Re:龍神録プログラム

#7

投稿記事 by piyoyo » 16年前

toyoさんのやり方でやったら成功しました。皆さんご迷惑おかけしましたありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る