構造体とdefineが読み込まれません

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

構造体とdefineが読み込まれません

#1

投稿記事 by スピン » 14年前

はじめまして。スピンと申します
今回私はローグライクゲームを作成しています。
第七章を応用しボードを作っているのですが
タイトルの通り構造体とdefineが読み込まれません。

<char.cpp>

コード:

 
#include "GV.h"

void calc_ch(){
	ch.cnt++;
	ch.img=(ch.cnt%18)/6;
}
<ini.cpp>

コード:

#include "GV.h"

void first_ini(){
	ch.x=FIELD_MAX_X/2;
	ch.y=FIELD_MAX_Y/2;
}
<GV.h>

コード:

#include "DxLib.h"
#include "define.h"

#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern 
#endif

#include "function.h"

GLOBAL int img_ch[8][3];	
GLOBAL int img_board[40];

GLOBAL int func_state;

GLOBAL ch_t ch;	
<define.h>

コード:

#include "struct.h"

#define FIELD_MAX_X 432
#define FIELD_MAX_Y 432

#define FIELD_X 24
#define FIELD_Y 24

<struct.h>

コード:

typedef struct{
	int img; //画像
	int dir; //向き
	int cnt; //カウント
	float x,y; //位置
}ch_t;

エラーメッセージ
char.cpp
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(4) : error C2065: 'ch' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(4) : error C2228: '.cnt' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(5) : error C2065: 'ch' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(5) : error C2228: '.img' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(5) : error C2065: 'ch' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(5) : error C2228: '.cnt' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
graph.cpp
ini.cpp
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(5) : error C2065: 'ch' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(5) : error C2228: '.x' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(5) : error C2065: 'FIELD_MAX_X' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(6) : error C2065: 'ch' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(6) : error C2228: '.y' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(6) : error C2065: 'FIELD_MAX_Y' : 定義されていない識別子です。

どうしたら構造体とdefineが読み込まれるか教えてください
使用osはwindowsで、コンパイラはc++ee2008です
C++については、参考書を一通り読み終えた程度です
回答よろしくお願いします

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 構造体とdefineが読み込まれません

#2

投稿記事 by softya(ソフト屋) » 14年前

はじめまして。
これは狙ったGV.hと違うGV.hを読み込んでいる印象を受けるエラーです。
struct.hをわざとエラーになるような変更したときにコンパイルエラーは増えますでしょうか?
もし変わらなければ別にあるGV.hを読んでいる可能性があります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

スピン

Re: 構造体とdefineが読み込まれません

#3

投稿記事 by スピン » 14年前

softyaさん返答ありがとうございました。
コードを以下のように変更した結果、以下のエラーがでました。
<struct.h>(変更前)

コード:

typedef struct{
	int img; //画像
	int dir; //向き
	int cnt; //カウント
	float x,y; //位置
}ch_t;

<struct.h>(変更後)

コード:

/*
typedef struct{
	int img; //画像
	int dir; //向き
	int cnt; //カウント
	float x,y; //位置
}ch_t;*/
エラーメッセージ
char.cpp
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(4) : error C2065: 'ch' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(4) : error C2228: '.cnt' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(5) : error C2065: 'ch' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(5) : error C2228: '.img' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(5) : error C2065: 'ch' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\char.cpp(5) : error C2228: '.cnt' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
graph.cpp
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C2146: 構文エラー : ';' が、識別子 'ch' の前に必要です。
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\documents and settings\r\デスクトップ\c++\project1\ソース\graph.cpp(5) : error C2228: '.x' の左側はクラス、構造体、共用体でなければなりません
型は 'int' です。
c:\documents and settings\r\デスクトップ\c++\project1\ソース\graph.cpp(5) : error C2228: '.y' の左側はクラス、構造体、共用体でなければなりません
型は 'int' です。
c:\documents and settings\r\デスクトップ\c++\project1\ソース\graph.cpp(5) : error C2228: '.img' の左側はクラス、構造体、共用体でなければなりません
型は 'int' です。
ini.cpp
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(4) : error C2065: 'ch' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(4) : error C2228: '.x' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(4) : error C2065: 'FIELD_MAX_X' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(5) : error C2065: 'ch' : 定義されていない識別子です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(5) : error C2228: '.y' の左側はクラス、構造体、共用体でなければなりません
型は ''unknown-type'' です。
c:\documents and settings\r\デスクトップ\c++\project1\ローグライク\ini.cpp(5) : error C2065: 'FIELD_MAX_Y' : 定義されていない識別子です。
key.cpp
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C2146: 構文エラー : ';' が、識別子 'ch' の前に必要です。
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
load.cpp
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C2146: 構文エラー : ';' が、識別子 'ch' の前に必要です。
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
main.cpp
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C2146: 構文エラー : ';' が、識別子 'ch' の前に必要です。
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
c:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません

全体のエラーは増えましたが、iniとcharについては増えませんでした

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 構造体とdefineが読み込まれません

#4

投稿記事 by softya(ソフト屋) » 14年前

それであれば、iniとcharについてはGV.hを読んでいないか違うGV.hを読み込んでいる可能性があります。
GV.hの読み込みの確認とGV.hが2つないか探してみてください。

【補足】ちなみに小文字でgv.hでも同じGV.hとみなされます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

スピン

Re: 構造体とdefineが読み込まれません

#5

投稿記事 by スピン » 14年前

char.cppの#include "GV.h"を消した所、同じエラーが出たため
どうやらGV.hを読み込めてないようです。
もう一つ、構造体を扱うソースのgraph.cppの#include "GV.h"をコピーしてペーストしても解決しませんでした。
graph.cppではGV.hがちゃんと読み込めました
<graph.cpp>

コード:

#include "GV.h"


void graph_ch(){
    DrawRotaGraphF(ch.x+FIELD_X,ch.y+FIELD_Y,1.0f,0.0f,img_ch[0][ch.img],TRUE);
}

void graph_board(){
    DrawGraph(  0,  0,img_board[10],FALSE);
    DrawGraph(  0, 24,img_board[11],FALSE);
    DrawGraph(  0,456,img_board[12],FALSE);
    DrawGraph(456,  0,img_board[20],FALSE);
}

void graph_main(){
    graph_ch();
	graph_board();
}
フォルダ内を確認した所、GV.hは2つありませんでした

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 構造体とdefineが読み込まれません

#6

投稿記事 by softya(ソフト屋) » 14年前

とりあえず、設定絡みの問題っぽいのでローグライクとソースフォルダに分けるのは難しいので止めてひとつのフォルダ(ローグライク)に集めてみてください。
その時、ソリューションエクスプローラで「プロジェクトから除外」して、移動後に既存項目の追加を行なってください。
※ この作業前に環境のコピーを保存しておいてください。失敗してファイルが消えたり設定を破壊すると怖いので。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

スピン

Re: 構造体とdefineが読み込まれません

#7

投稿記事 by スピン » 14年前

最初からソースファイルはローグライクフォルダにすべて置いてありました
そこで一度7章のようなフォルダ構成にしましたが、解決しませんでした

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 構造体とdefineが読み込まれません

#8

投稿記事 by softya(ソフト屋) » 14年前

:\documents and settings\r\デスクトップ\c++\project1\ソース\gv.h(20) : error C2146: 構文エラー : ';' が、識別子 'ch' の前に必要です。
と言うエラーを見るかぎりは、gv.hは"project1\ソース\"のフォルダにある様ですが?
これも「ローグライク」に移されたのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

スピン

Re: 構造体とdefineが読み込まれません

#9

投稿記事 by スピン » 14年前

解決しました。
ローグライクの中のGV.hを読み込んでいたのではなく
第七章のGV.hを読み込んでいたようです。
これからは、エラーの中の、どのファイルから読み込んでいるかも確認したいと思います

閉鎖

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