ページ 1 / 1
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は何が違うのでしょうか?