ページ 11

エラーが出るのですが・・・

Posted: 2012年5月14日(月) 14:16
by C.C
こんにちは。現在製作中のゲームでタイトル、ゲームクリア、ゲームオーバー、ゲームのメイン画面をswitch文を使って製作中なのですがswitch文に【宣言が必要です】とエラーが出ます。どうしたらよいですか。お願いします。
製作途中のソースを載せます。
game_screen.cpp

コード:

#include "DxLib.h"
#include "game_screen.h"
#include "player.h"

switch(g_gamestate){
case GAME_TITLE:
	DrawGameTitle();
	break;

case GAME_MAIN:
	Player_Update();
	break;

case GAME_CLEAR:
	DrawGameClear();
	break;

case GAME_OVER:
	DrawGameOver();
	break;
}
gamescreen.h
#define DEF_GAME_SCREEN_H

コード:

enum GameState{
	GAME_TITLE,
	GAME_MAIN,
	GAME_CLEAR,
	GAME_OVER
}g_gamestate = GAME_TITLE;

void GoGameTitle();
void DrawGameTitle();
void GoGameMain();
void GoGameClear();
void DrawGameClear();
void GoGameOver();
void DrawGameOver();

Re: エラーが出るのですが・・・

Posted: 2012年5月14日(月) 14:22
by softya(ソフト屋)
関数がなくイキナリC言語の命令文があるよう見えますが。

[補足]
前の質問が解決チェックされていないので解決チェックをお願いします。
http://dixq.net/forum/viewtopic.php?f=3&t=10640

Re: エラーが出るのですが・・・

Posted: 2012年5月14日(月) 14:49
by C.C
softya(ソフト屋) さんが書きました:関数がなくイキナリC言語の命令文があるよう見えますが。

[補足]
前の質問が解決チェックされていないので解決チェックをお願いします。
http://dixq.net/forum/viewtopic.php?f=3&t=10640
チェックつけました。すみませんでした

Re: エラーが出るのですが・・・

Posted: 2012年5月14日(月) 14:54
by softya(ソフト屋)
解決チェックしてもらえばOKですよ。

関数の件は理解してもらえましたか?
あと気づきましたが、enum変数がヘッダファイル中で実体定義されているのでこのヘッダファイルを複数のcppファイルにインクルードすると多重定義でエラーになります。

Re: エラーが出るのですが・・・

Posted: 2012年5月14日(月) 14:56
by C.C
softya(ソフト屋) さんが書きました:解決チェックしてもらえばOKですよ。

関数の件は理解してもらえましたか?
あと気づきましたが、enum変数がヘッダファイル中で実体定義されているのでこのヘッダファイルを複数のcppファイルにインクルードすると多重定義でエラーになります。

Re: エラーが出るのですが・・・

Posted: 2012年5月14日(月) 14:56
by C.C
softya(ソフト屋) さんが書きました:解決チェックしてもらえばOKですよ。

関数の件は理解してもらえましたか?
あと気づきましたが、enum変数がヘッダファイル中で実体定義されているのでこのヘッダファイルを複数のcppファイルにインクルードすると多重定義でエラーになります。

Re: エラーが出るのですが・・・

Posted: 2012年5月14日(月) 14:59
by C.C
C.C さんが書きました:
softya(ソフト屋) さんが書きました:解決チェックしてもらえばOKですよ。

関数の件は理解してもらえましたか?
あと気づきましたが、enum変数がヘッダファイル中で実体定義されているのでこのヘッダファイルを複数のcppファイルにインクルードすると多重定義でエラーになります。
すみません。間違えて投稿してしまいました。
switchを関数の中に入れて、game_screen.hは一度しか呼び出せない。でいいんでしょうか。

Re: エラーが出るのですが・・・

Posted: 2012年5月14日(月) 15:06
by softya(ソフト屋)
C.C さんが書きました:switchを関数の中に入れて、game_screen.hは一度しか呼び出せない。でいいんでしょうか。
C言語の制御命令は全て関数である必要があるので、関数の外では変数の宣言・定義以外は行うことは出来ません。
なのでイキナリ命令があることは許されません。

良いか悪いかは私が決めることではありませんが、ヘッダにこのenum定義があったら他のcppでインクルードが出来ないのでヘッダがある意味が無いと思います。
それと他のcppでこのenumの内容を参照することがないのなら、ヘッダにenumを置く必要はないでしょう。game_screen.cppにenumを置けば良いと思います。

Re: エラーが出るのですが・・・

Posted: 2012年5月14日(月) 16:50
by C.C
softya(ソフト屋) さんが書きました:
C.C さんが書きました:switchを関数の中に入れて、game_screen.hは一度しか呼び出せない。でいいんでしょうか。
C言語の制御命令は全て関数である必要があるので、関数の外では変数の宣言・定義以外は行うことは出来ません。
なのでイキナリ命令があることは許されません。

良いか悪いかは私が決めることではありませんが、ヘッダにこのenum定義があったら他のcppでインクルードが出来ないのでヘッダがある意味が無いと思います。
それと他のcppでこのenumの内容を参照することがないのなら、ヘッダにenumを置く必要はないでしょう。game_screen.cppにenumを置けば良いと思います。
ありがとうございます。早速やってみたいと思います。