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

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

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

#1

投稿記事 by nam » 13年前

↓のコードで
"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;

	}


nil
記事: 428
登録日時: 14年前

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

#2

投稿記事 by nil » 13年前

ENEMY_NORMAL1は定義していますよね?

box
記事: 2002
登録日時: 15年前

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

#3

投稿記事 by box » 13年前

私だったら、たぶん次のように書くと思います。

コード:

#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;
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
へにっくす
記事: 634
登録日時: 13年前
住所: 東京都

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

#4

投稿記事 by へにっくす » 13年前

涼雅 さんが書きました: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;
としてください。
それで通るのではないかな?
written by へにっくす

nam

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

#5

投稿記事 by nam » 13年前

皆さんありがとうございました。
おかげで解決しました。

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

閉鎖

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