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

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

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

#1

投稿記事 by TETSUCOM » 5年前

久々にゲームを作ったのですが、一応完成したのですが
#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 かずま » 5年前

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

TETSUCOM

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

#3

投稿記事 by TETSUCOM » 5年前

お返事ありがとうございます!エラーメッセージです↓↓↓
/////////////////////////////////////////////////////////////////////////////////////////////////
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
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

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

#4

投稿記事 by みけCAT » 5年前

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

TETSUCOM

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

#5

投稿記事 by TETSUCOM » 5年前

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

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

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

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

#6

投稿記事 by あたっしゅ » 5年前

.cpp なら、#define を使うのではなく、 const int 等に書き換えた方が、よいのでは ?
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

TETSUCOM
記事: 5
登録日時: 5年前

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

#7

投稿記事 by TETSUCOM » 5年前

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

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


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

返信

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