13章について構文エラー

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

13章について構文エラー

#1

投稿記事 by イセミト » 13年前

初めまして。イセミトと申します。
今回初の質問をさせて頂きます。

実は私、C++を最近になって学び始めました。
C#(XNAも),Cはある程度理解でき、XNAを使用してSTGゲームを一つ作り上げた経験もあります。

そこである程度プログラムの流れというものを理解した所で以前挫折したこの龍神録に再挑戦させて頂きました。
ところが、C#,Cを学んでいた時には出会ったことのないエラーが出てきてしまい悩んでいます。

【エラー内容】
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。

過去質問を見る限り、どうやら「;」のつけ間違いではなかろうかというわけでソースコードを見なおしてみたのですがそれらしい所は私が見落としていなければありませんでした。

しかもこのエラー。ダブルクリックしてエラー部に飛ぶと、「math.h」のヘッダーファイルに飛ぶんです。
え、「math.h」なんてミジンコたりともいじってないのに……。

さらにしかも、VisualStudio(2010)の出力をみてみると、ほとんどのファイル(まだ何も書いていない物も)においてこのエラーを吐き出しているようなのです。たぶん読み方が違うだけなのかもしれませんが。
一応念のため載せておきます。

【出力】
1>------ ビルド開始: プロジェクト: RyuJin, 構成: Debug Win32 ------
1> shotH.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> shot.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> out.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> music.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> main.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> load.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> key.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> ini.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> graph_back.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> graph.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> fps.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> enemy_act_pattern.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> enemy.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> cshot.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> char.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> boss_shotH.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> boss_shot.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\math.h(27): error C2144: 構文エラー : 'int' は ';' によって先行されなければなりません。
1> コードを生成中...
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

あと、いろんな方々の過去質問で「なになにのソースコード見せて」と言われていたファイルのソースコードも載せておきます。

【ソースコード】

コード:


//---------------------------
//GV.hファイル
//---------------------------


#include "../../../include/DxLib.h"
#include "define.h"
#include "math.h"

#ifdef GLOBAL_INSTANCE	//「GLOBAL_INSTANCE」が文頭に定義されていれば
#define GLOBAL			//変数宣言前記述の「GLOBAL」という文字は空白に置き換えられる
#else					//定義されていなければ
#define GLOBAL extern	//GLOBALという文字はexternに置き換えられる
#endif

#include "function.h"           //関数宣言


//ここから定義

//画像用変数宣言
GLOBAL int img_ch[2][12];       //キャラクタ画像9枚分 X2(変身用)
//構造体変数宣言
GLOBAL ch_t ch;                 //キャラクタデータ宣言
//関数の状態変数宣言
GLOBAL int func_state;			//いくつもの関数の呼び出し遷移のための変数宣言
//画像格納用変数宣言
GLOBAL int img_board[40];		//画像を格納するための変数宣言
//パッド割り当て変数宣言
GLOBAL configpad_t ConfigPad;	//パッドの割り当てられた変数の宣言
//ゲーム中のカウンタ
GLOBAL int Stage_Count;
//敵画像格納配列宣言
GLOBAL int img_enemy[3][9];		//敵画像9枚分 X3体分
//敵の同時表示最大数
GLOBAL enemy_t Enemy[ENEMY_MAX];
//敵の出現情報
GLOBAL enemy_order_t Enemy_Order[ENEMY_ORDER_MAX];
//弾の画像
GLOBAL int Image_Bullet[10][10];
//音楽ファイル用変数
GLOBAL int Sound_Se[SE_MAX];
GLOBAL int Se_Flag[SE_MAX];  //サウンドフラグ
GLOBAL shot_t Shot[SHOT_MAX];//ショット情報


コード:


//-------------------------------------------------------
//function.hファイル
//-------------------------------------------------------


//graph.cppからの呼び出し
        //描画メイン
        GLOBAL void graph_main();

//key.cppからの呼び出し
        //現在のキー入力処理を行う
        GLOBAL int GetHitKeyStateAll_2();
        //受け取ったキー番号の現在の入力状態を返す
        GLOBAL int CheckStateKey(unsigned char Handle);
		//パッドとキーボードの両方の入力をチェックする
		GLOBAL void GetHitPadStateAll();
		//されたパッドキー番号の入力状態を返す。返り値が-1なら不正
		GLOBAL int CheckStatePad(unsigned int Handle);

//laod.cppからの呼び出し
        //データのロード
        GLOBAL void Load();
		//ファイルのロード
		GLOBAL void Load_Story();

//ini.cppからの呼び出し
		//初期化
		GLOBAL void First_Ini();
		GLOBAL void Ini();

//char.cppからの呼び出し
		//アニメーション計算
		GLOBAL void Calc_ch();
		//移動処理
		GLOBAL void ch_Move();

//enemy.cppからの呼び出し
		//敵情報
		GLOBAL void Enemy_Main();

//shot.cppからの呼び出し
		//n番目のショットを登録した敵と自機との角度を返す
        GLOBAL double ShotAtan2(int n);
		//空いている弾を探す
        GLOBAL int Shot_Search(int n);
		//「shot.cpp」内で定義した関数をまとめて呼び出す
        GLOBAL void Shot_Main();

//music.cpp
		//初期化
        GLOBAL void Music_Ini();
		//再生
        GLOBAL void Music_Play();

コード:


//-------------------------------------------------------
//graph.hファイル
//-------------------------------------------------------

#include "../include/GV.h"

//キャラクタの描画関数
void graph_ch()
{
	DrawRotaGraphF(ch.x+FIELD_X,ch.y+FIELD_Y,1.0f,0.0f,img_ch[0][ch.Image],true);
}

//敵の描画関数
void graph_enemy()
{
	int i;
	for(i = 0; i < ENEMY_MAX; i++)
	{
		if(Enemy[i].Flag  ==  1)
		{
			DrawRotaGraphF(Enemy[i].x+FIELD_X,Enemy[i].y+FIELD_Y,1.0f,0.0f,img_enemy[0][Enemy[i].Image],true);
		}
	}
}

//背景枠の描画関数
void graph_board()
{
        DrawGraph(  0,  0,img_board[10],false);	//枠上
        DrawGraph(  0, 16,img_board[11],false);	//枠左
        DrawGraph(  0,464,img_board[12],false);	//枠下
        DrawGraph(416,  0,img_board[20],false);	//枠右
}

//弾の描画
void graph_bullet()
{
	int i,j;
    SetDrawMode( DX_DRAWMODE_BILINEAR ) ;//線形補完描画
    //敵の弾幕数分ループ
	for(i=0;i<SHOT_MAX;i++)
	{
		//弾幕データがオンなら
        if(Shot[i].Flag > 0)
		{
			//その弾幕が持つ弾の最大数分ループ
            for(j = 0; j < SHOT_BULLET_MAX; j++)
			{
				//弾データがオンなら
                if(Shot[i].Bullet[j].Flag != 0)
				{
					if(Shot[i].Bullet[j].Eff == 1)
					{
						//描画ブレンドモードをセットする
						SetDrawBlendMode( DX_BLENDMODE_ADD, 255);
					}

					//グラフィックの回転描画
                    DrawRotaGraphF(
						Shot[i].Bullet[j].x + FIELD_X, Shot[i].Bullet[j].y + FIELD_Y,
                        1.0, Shot[i].Bullet[j].Angle + PI/2,
                        Image_Bullet[Shot[i].Bullet[j].Kind][Shot[i].Bullet[j].Color],true);

                   if(Shot[i].Bullet[j].Eff == 1)
				   {
					   //描画ブレンドモードをセットする
						SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0);
				   }
               }
            }
        }
    }
	SetDrawMode(DX_DRAWMODE_NEAREST);//描画形式を戻す
}

//描画関数の呼び出し
void graph_main()
{
	graph_enemy();
	graph_ch();
	graph_bullet();
	graph_board();
}


本当にありえないくらいの長文失礼いたしました。
因みに、ソースコードはそのままコピペしたわけではなく、私なりに理解しながら打ち込んでいきました。

エラー吐いているので理解出来ていないということになりますが……。

どうか何卒よろしくお願いします。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 13章について構文エラー

#2

投稿記事 by ISLe » 13年前

math.hをインクルードしている行の前を見るとdefine.hをインクルードしていますね。

math.hでエラーが報告されるのは、define.hの最後に必要な;がないので続きとみなされるせいです。

イセミト

Re: 13章について構文エラー

#3

投稿記事 by イセミト » 13年前

ありました!
本当に見落としていただけでした!

「define.h」の最後で呼び出している「#include "struct.h"」で「struct.h」を読み込み、
「struct.h」の最後の、

コード:


//ショットに関する構造体
typedef struct
{
	int Flag;			//フラグ
	int Kind;			//種類
	int Count;			//カウンタ
	int Num;			//どの敵から発射されたかの番号

	double Base_Angle[1];//ベース角度
	double Base_Speed[1];//ベーススピード
	bullet_t Bullet[SHOT_BULLET_MAX];
}shot_t;

の「shot_t」の後に「;」がありませんでした!

助言いただきありがとうございました!

しかしこのエラーが無くなったことで新しいエラーが生まれてしまったのですが、そこはなんとか自分で考えてみようとおもいます。
それでも分からなかったら、またここに来ようかとおもいます。

ありがとうございました!

閉鎖

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