ページ 11

"定義されていない識別子です。"というエラーが出ます

Posted: 2012年11月11日(日) 07:18
by nam
↓のコードで
"error C2065: 'ENEMY_NORMAL1' : 定義されていない識別子です。"
と言うエラーが出て困っています。
どうすればよいのでしょうか?

コードはたぶん関係あるとこだけ切り取ってます。
言語はCです。

おそらく返事ができるのは明日の朝になると思います。

コード:


//はじめの方

//---------------------------
//Enemy
//---------------------------
#define ENEMY_NUM 20

typedef struct{
	int x[ENEMY_NUM],
		y[ENEMY_NUM],
		r[ENEMY_NUM],
		vx[ENEMY_NUM],
		vy[ENEMY_NUM];
	bool live[ENEMY_NUM];
	enum{
		ENEMY_NORMAL1,
		ENEMY_NORMAL2
	}type[ENEMY_NUM];
}Enemy;

Enemy enemy;


//初期化関数の中
for(int i=0;i<ENEMY_NUM;i++){

		enemy.x[i] = -1;
		enemy.y[i] = -1;
		enemy.r[i] = -1;
		enemy.vx[i] = -1;
		enemy.vy[i] = -1;
		enemy.live[i] = false;
		enemy.type[i] = ENEMY_NORMAL1;

	}


Re: "定義されていない識別子です。"というエラーが出ます

Posted: 2012年11月11日(日) 09:10
by nil
ENEMY_NORMAL1は定義していますよね?

Re: "定義されていない識別子です。"というエラーが出ます

Posted: 2012年11月11日(日) 09:51
by box
私だったら、たぶん次のように書くと思います。

コード:

#define ENEMY_NUM 20

typedef enum {
    ENEMY_NORMAL1, ENEMY_NORMAL2
} normal;

typedef struct{
    int x[ENEMY_NUM],
        y[ENEMY_NUM],
        r[ENEMY_NUM],
        vx[ENEMY_NUM],
        vy[ENEMY_NUM];
    bool live[ENEMY_NUM];
    normal type[ENEMY_NUM];
} Enemy;

Enemy enemy;

Re: "定義されていない識別子です。"というエラーが出ます

Posted: 2012年11月11日(日) 10:41
by へにっくす
涼雅 さんが書きました:ENEMY_NORMAL1は定義していますよね?
コードをよく見ましょう。
enum列挙にあります。
nam さんが書きました:"error C2065: 'ENEMY_NORMAL1' : 定義されていない識別子です。"
と言うエラーが出て困っています。
どうすればよいのでしょうか?

コードはたぶん関係あるとこだけ切り取ってます。
言語はCです。
言語はC?
C言語にはboolという型は無いんじゃなかったっけ。
そのエラーが出ていないってことは、
おそらくC++言語としてコンパイルされていると思いますよ。
オフトピック
C言語としてコンパイルしたら以下のようなエラーが出ました。(VS2005コマンドプロンプトで実施)

コード:

F:\>cl /c /TC 1.c
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

1.c
1.c(15) : error C2061: 構文エラー : 識別子 ’bool’
1.c(20) : error C2059: 構文エラー : ’}’
さてここからはC++言語としてでもいい場合です。
エラーが出ている原因は、構造体Enemyで定義している列挙型なので、
初期化関数の中では単純にENEMY_NORMAL1と書いただけでは未定義になる。
enemy.type = ENEMY_NORMAL1;
の1行を
enemy.type = Enemy::ENEMY_NORMAL1;
としてください。
それで通るのではないかな?

Re: "定義されていない識別子です。"というエラーが出ます

Posted: 2012年11月12日(月) 05:50
by nam
皆さんありがとうございました。
おかげで解決しました。

へにっくすさんの言ったとおりC++としてコンパイルされていたようです。