ページ 1 / 1
龍神録プログラム
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さんのやり方でやったら成功しました。皆さんご迷惑おかけしましたありがとうございます。