#define文法的には間違ってない(多分)のにエラー

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

#define文法的には間違ってない(多分)のにエラー

#1

投稿記事 by TETSUCOM » 1週間前

久々にゲームを作ったのですが、一応完成したのですが
#defineで定義した一部の定数が何故かコンパイルエラーになるので
仕方なく置換機能で数字に変換したら何とかコンパイルが通りました。
文法的には間違ってないと思うのですが。
こういう経験は人生の中で何回かありますよね?もっと良い解決策が
あったら是非、ご教示して頂きたいのですが。よろしくお願いしますm(_ _)m

ソースの一部↓↓↓

コード:

//Enemy.h//////////

#pragma once
#include"DxLib.h"
#include"Battle.h"
#include"RingChara.h"
#include"SE.h"
#include<string.h>

#define  ENEMY_ID_NUM        31//敵全部の数
[b]//#define  5            5 //戦闘敵の数   <<<<<<<<<<<<<ココ!「#define ENEMY_NUM 5」としていた[/b]

#define ENEMY_GROUP_DATA_NUM 20 //グループデータ数

#define PHYSICAL              0 //物理
#define PHYSICAL2             1 //間接物理
#define NOTHING               2 //無
#define FIRE                  3 //火
#define ICE                   4 //氷
#define LIGHTNING             5 //雷

#define AVANT                 0 //前衛
#define BACK                  1 //後衛

#define ENEMY_NOMAL           1 //通常
#define ENEMY_DAMAGE          2 //ダメージ
#define ENEMY_ATTACK          3 //攻撃
#define ENEMY_AFTER_IMAGE     0 //残像
#define ENEMY_NOTHING        -1 //存在しない

#define AFTER_IMAGE_NUM      10 //残像の数

typedef struct
{
	int    id;               //ID
	double max_hp, hp;       //HP
	double str;              //STR
	int    attribute;        //属性
	double def;              //DEF
	char   g_file_name[256]; //グラフィックファイルネーム
	double x, y;             //座標
	double x0, y0, xp, yp;   //座標補正
	int    h_graph;          //グラフィックハンドル
	int    size_x, size_y;   //グラフィックサイズ
	int    state;            //状態
	int    position;         //ポジション
	int    shak_num;         //揺れの数
	bool   attack_flag;      //攻撃フラグ
}ENEMY;

extern ENEMY Enemy[5],        //戦闘敵
             EnemyData[ENEMY_ID_NUM]; //敵データ
 

かずま

Re: #define文法的には間違ってない(多分)のにエラー

#2

投稿記事 by かずま » 1週間前

TETSUCOM さんが書きました:
1週間前
#defineで定義した一部の定数が何故かコンパイルエラーになるので
エラーメッセージをすべてコピペして見せてください。
定義した ENEMY_NUM を使用している部分のソースも必要です。
Battle.h など他のすべてのヘッダファイルに ENEMY_NUM に関する
定義はないのでしょうか?

TETSUCOM

Re: #define文法的には間違ってない(多分)のにエラー

#3

投稿記事 by TETSUCOM » 1週間前

お返事ありがとうございます!エラーメッセージです↓↓↓
/////////////////////////////////////////////////////////////////////////////////////////////////
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(35): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(51): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(53): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(54): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>Enemy.cpp
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(35): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(51): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(53): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(54): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\enemyshak.h(19): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>EnemyShak.cpp
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(35): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(51): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(53): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(54): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>InitSystem.cpp
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(35): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(51): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(53): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(54): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>Main.cpp
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(35): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(51): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(53): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(54): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>Player.cpp
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(35): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(51): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(53): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(54): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\enemyshak.h(19): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>RingChara.cpp
1>c:\users\tetsu\documents\works\otokomusouchi\enemyshak.h(19): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>Title.cpp
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(35): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(51): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(53): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\ringchara.h(54): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>c:\users\tetsu\documents\works\otokomusouchi\enemyshak.h(19): error C2065: 'ENEMY_NUM': 定義されていない識別子です。
1>プロジェクト "ProjectDX.vcxproj" のビルドが終了しました -- 失敗。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
////////////////////////////////////////////////////////////////////////////////////////////////

ソースをすべて乗っけるとなると膨大な量になるのですが…
複数個所で定義しているという初歩的なミスはしていないように思います。

大昔の事なので記憶があやふやですが、

#define UFO xxx //xxxは適当な数字

何て定義した時も、何かエラーで弾かれた事があったような。
学校の先生に質問すると、「システムがなんたら~」とか言って
#defineで定義するのをやめたらいけたような記憶があります。
予約語以外にも使ってはいけない文字列とかあるんでしょうか。

アバター
みけCAT
記事: 6115
登録日時: 8年前
住所: 千葉県
連絡を取る:

Re: #define文法的には間違ってない(多分)のにエラー

#4

投稿記事 by みけCAT » 1週間前

「ENEMY_NUMを定義している(た)部分」より前でRingChara.hなどをincludeしており、
ringchara.hでエラーが出ていますね。
そのため、ENEMY_NUMの定義より前に使用が来てしまった可能性が考えられます。
循環などが起こらないよう、includeの関係を考え直すべきでしょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

TETSUCOM

Re: #define文法的には間違ってない(多分)のにエラー

#5

投稿記事 by TETSUCOM » 1週間前

返信ありがとうございます!
#pragma onceさえしていれば何でもOKと思っていました。

出直してきます。ありがとうございましたm(_ _)m

アバター
あたっしゅ
記事: 228
登録日時: 8年前
住所: 東京23区
連絡を取る:

Re: #define文法的には間違ってない(多分)のにエラー

#6

投稿記事 by あたっしゅ » 1週間前

.cpp なら、#define を使うのではなく、 const int 等に書き換えた方が、よいのでは ?
手提鞄あたっしゅ、[MrAtassyu] http://atassyu.rosx.net/
手提鞄屋魚有店(てさげかばんやうおありてん)
2019(H31)-05-12 Comitia 128 青海新会場

TETSUCOM
記事: 3
登録日時: 1週間前

Re: #define文法的には間違ってない(多分)のにエラー

#7

投稿記事 by TETSUCOM » 1週間前

constってextern出来るんですね!知らなかったです。
勉強になりました!

ちなみに今回作ったゲームは動画がこちら↓↓↓


大したものじゃないんでプレイして下さいとまでは言いませんが
1分程度の動画なので見てくれると嬉しいです^^

返信

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