龍神録プログラミングの館第5章について

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

龍神録プログラミングの館第5章について

#1

投稿記事 by ys » 15年前

はじめまして。昨日よりここのお世話になっております。
タイトルにもあります第5章についてわからない点があります。

#ifdefを使うことによってGLOBAL_INSTANCEが定義されている場合(main.cpp)はGLOBALを空白に、
定義されていない場合(他.cpp)はGLOBALをexternにしてグローバル変数をうまく取り扱うというのは理解できたのですが、
同時に関数の宣言の場合は逆にmain.cppではexternをつけて宣言しないといけないし、
他.cppでは宣言いらないしで、上の#ifdefの文にあわない気がして納得が出来ません。

どういう仕組みになっているのか、もしよろしければご教授お願いいたします。

Justy

Re:龍神録プログラミングの館第5章について

#2

投稿記事 by Justy » 15年前

 関数のプロトタイプ宣言で externや staticなどの記憶域クラス指定子がついていない場合、
その宣言には externをついているものとして扱われます。

 つまり、
extern void boss_shot_main();
void boss_shot_main();
のどちらで書いても同じ扱いとなります。

 試しに function.hの各プロトタイプ宣言から GLOBALを取り除いてみて下さい。
 問題なくコンパイルはできるはずです。

閉鎖

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