龍神録5章で何を言ってるのか全く分からない

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

龍神録5章で何を言ってるのか全く分からない

#1

投稿記事 by やまだ » 13年前

はじめまして、やまだといいます。
私は入門サイトでC言語をある程度理解し、
ゲームプログラミングの館の入門編も理解したのですが、
龍神録の館を見てみると、5章から全く理解できません。

特に、

#ifdef GLOBAL_INSTANCE

#define GLOBAL

#else

#define GLOBAL extern

#endif

GLOBAL int img;


でなぜあそこに書いてある意味になるのかちっとも・・・

だれか心のお優しい方、わかりやすく説明していただけたら幸いです。
どうぞよろしくお願いします。

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

Re: 龍神録5章で何を言ってるのか全く分からない

#2

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

まず、#ifdefの意味をご存知ででしょうか?
それと#defineの機能です。

もし、これをご存知だったら、

コード:

// コードA
#define GLOBAL_INSTANCE
#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif
GLOBAL int img;

コード:

// コードB
#ifdef GLOBAL_INSTANCE
#define GLOBAL
#else
#define GLOBAL extern
#endif
GLOBAL int img;
の2つで、それぞれ
GLOBAL int img;
のマクロ展開がどうなるか書いてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

やまだ

Re: 龍神録5章で何を言ってるのか全く分からない

#3

投稿記事 by やまだ » 13年前

わからないなりに考えてみましたが・・・・

//コードA 
#define GLOBAL_INSTANCE //GLOBAL_INSTANCEを定義
#ifdef GLOBAL_INSTANCE //GLOBAL_INSTANCEが定義されていたら
#define GLOBAL //GLOBALを空白に
#else //そうでなければ
#define GLOBAL extern //GLOBALにexternを定義
#endif //#ifdef終了
GLOBAL int img; // GLOBAL_INSTANCEが定義されているのでGLOBALを空白にする

//コードB
#ifdef GLOBAL_INSTANCE //GLOBAL_INSTANCEが定義されていたら
#define GLOBAL //GLOBALを空白に
#else //そうでなければ
#define GLOBAL extern //GLOBALをexternに
#endif //#ifdef終了
GLOBAL int img; //GLOBAL_INSTANCEが定義されていないのでGLOBALをexternにする

誤っていたらすみません

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

Re: 龍神録5章で何を言ってるのか全く分からない

#4

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

そうですね。考えとしては合っています。

もしかしたら、
int img; //実体を定義する
extern int img; //外部参照を行う。
の違いについての疑問でしょうか?

【追記】
あるいは、プリコンパイル、コンパイル、リンクで行われる工程がよく分からない可能性もありますね。
(1)プリコンパイル ・・・ cppとhを混ぜあわせて、#defineなどの置き換えも行う。
(2)コンパイル ・・・ (1)で作りだされたソースをコンパイルしてオブジェクトを作成する。
(3)リンク ・・・ (2)で作り出されたオブジェクトをつなぎあわせてexeを作成する。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

やまだ

Re: 龍神録5章で何を言ってるのか全く分からない

#5

投稿記事 by やまだ » 13年前

丁寧なご指導ありがとうございました。
おかげさまで理解することができました。
あの考え方で合っていたのですね。
本当にありがとうございました。

閉鎖

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