ページ 11

C言語の館のソースのある部分がわかりません

Posted: 2022年2月17日(木) 20:43
by cupa
度々失礼します。

C言語の館の

コード:

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

#include "function.h"
*GV.h

この部分がよくわかりません。

館では『「GLOBAL_INSTANCEが定義されていればGLOBALという文字は空白に置き換えられる」
「GLOBAL_INSTANCEが定義されていなければGLOBALという文字はexternに置き換えられる」
』とありますが、GLOBAL=externなのではないのでしょうか?別物なのでしょうか?
また、調べたらところ、staticやexternが付与されていない場合はデフォルトでexternがついたのと同じ、
ということらしいのですが・・・

Re: C言語の館のソースのある部分がわかりません

Posted: 2022年2月17日(木) 20:44
by cupa
後半の(また、~)部分については関数の場合です

Re: C言語の館のソースのある部分がわかりません

Posted: 2022年2月17日(木) 20:47
by cupa
あともう2つ、一番はじめの行に他ファイルがインクルードされていたのですが、なぜfunction.hだけ#endifのあとに書いてあるのでしょうか?

#endifがプログラムの最後に書いていないのは何故でしょうか、これじゃあインクルードガードになっていないのではないのでしょうか?

Re: C言語の館のソースのある部分がわかりません

Posted: 2022年2月17日(木) 21:59
by あたっしゅ
東上☆海美☆「
> #endifがプログラムの最後に書いていないのは何故でしょうか、
> これじゃあインクルードガードになっていないのではないのでしょうか?

インクルードガードじゃないみみ。

Re: C言語の館のソースのある部分がわかりません

Posted: 2022年2月18日(金) 07:58
by みけCAT
cupa さんが書きました:
3年前
GLOBAL=externなのではないのでしょうか?別物なのでしょうか?
はい、別物ですね。
extern はC言語の予約語であり、ユーザが定義しなくても使えます。
GLOBAL はただの識別子であり、ユーザが定義(または宣言)しないと使えません。
cupa さんが書きました:
3年前
また、調べたらところ、staticやexternが付与されていない場合はデフォルトでexternがついたのと同じ、
ということらしいのですが・・・
cupa さんが書きました:
3年前
後半の(また、~)部分については関数の場合です
GLOBAL は関数でないもの(変数)について使われていますよね?

Re: C言語の館のソースのある部分がわかりません

Posted: 2022年2月18日(金) 23:21
by cupa
externとGLOBALは機能自体は同じなのでしょうか?

Re: C言語の館のソースのある部分がわかりません

Posted: 2022年2月20日(日) 10:51
by cupa
externとGLOBALは何が違うのでしょうか?