第5章の消す部分がわからない

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

第5章の消す部分がわからない

#1

投稿記事 by アクア » 15年前

第5章宣言の仕方について質問です。

GV.h変更などをした後、後は「main.cpp」「graph.cpp」「load.cpp」にある変数の宣言部と、extern宣言を全て消してください。

とありますが、上記がどの部分なのかがわかりません。

詳しい方いらっしゃいましたら、教えてください;;

ookami

Re:第5章の消す部分がわからない

#2

投稿記事 by ookami » 15年前

http://dixq.net/rp/5.html
ここですよね。

例えば、以下のような場合、iの実体が複数あるのでリンクエラーになります。

--main.cpp
int i;
:

--sub.cpp
int i; // すでにiの実体があるのでリンクエラー
:


次のような場合は、iの実体は1個なので、エラーになりません。

--main.cpp
int i;
:

--sub.cpp
extern int i; // 問題ない。main.cppのiと共有。
:


で、次のような場合は、iの実体がひとつもないので、エラーになります。

--main.cpp
extern int i;
:

--sub.cpp
extern int i;
:


この辺の、externを付けたり付けなかったりするのが面倒なので GV.h にまとめているのが問題のページのようですね。GV.h に「GLOBAL xxxx」として追加した変数は、「main.cpp」「graph.cpp」「load.cpp」で宣言する必要がなくなるから消す、ということです。

Dixq (管理人)

Re:第5章の消す部分がわからない

#3

投稿記事 by Dixq (管理人) » 15年前

既にookamiさんがお答えくださっていますが、
「main.cpp」「graph.cpp」「load.cpp」のファイルの冒頭にある変数の宣言とexternから始まる行を消すということです。

例えば

--load.cpp変更--

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

extern int img_ch[2][12];

void load(){
LoadDivGraph( "../dat/img/char/0.png" , 12 , 4 , 3 , 73 , 73 , img_ch[0] ) ;
}


この部分や


--main.cpp変更--

#define GLOBAL_INSTANCE
#include "../include/GV.h"

//現在のキー入力処理を行う
extern int GetHitKeyStateAll_2();
//受け取ったキー番号の現在の入力状態を返す
extern int CheckStateKey(unsigned char Handle);

//データのロード
extern void load();

//描画メイン
extern void graph_main();

int img_ch[2][12]; //キャラクタ画像9枚分 X2(変身用)
ch_t ch; //キャラクタデータ宣言


//ループで必ず行う3大処理
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す


この部分などですね。

アクア

Re:第5章の消す部分がわからない

#4

投稿記事 by アクア » 15年前

なるほどです、試してみますね~。

因みに模範解答などは無いのでしょうか。
たまにしかネットに繋げれないものでして・・・

ROM

Re:第5章の消す部分がわからない

#5

投稿記事 by ROM » 15年前

模範解答って何の?
見る限り問題のようなものはないようですが。

box

Re:第5章の消す部分がわからない

#6

投稿記事 by box » 15年前

考え方は、
1)実体を定義するのは、どこか1箇所だけ
2)他のファイルから当該の変数にアクセスする必要があれば、
  「実体は別のファイルにあるよ」という意味でexternを付ける

アクア

Re:第5章の消す部分がわからない

#7

投稿記事 by アクア » 15年前

お蔭様で解決できました。みなさん有難うございます。


13章でまたしてもつまづいてますが、別スレにしておきます。

閉鎖

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