はじめまして。昨日よりここのお世話になっております。
タイトルにもあります第5章についてわからない点があります。
#ifdefを使うことによってGLOBAL_INSTANCEが定義されている場合(main.cpp)はGLOBALを空白に、
定義されていない場合(他.cpp)はGLOBALをexternにしてグローバル変数をうまく取り扱うというのは理解できたのですが、
同時に関数の宣言の場合は逆にmain.cppではexternをつけて宣言しないといけないし、
他.cppでは宣言いらないしで、上の#ifdefの文にあわない気がして納得が出来ません。
どういう仕組みになっているのか、もしよろしければご教授お願いいたします。
龍神録プログラミングの館第5章について
Re:龍神録プログラミングの館第5章について
関数のプロトタイプ宣言で externや staticなどの記憶域クラス指定子がついていない場合、
その宣言には externをついているものとして扱われます。
つまり、
extern void boss_shot_main();
void boss_shot_main();
のどちらで書いても同じ扱いとなります。
試しに function.hの各プロトタイプ宣言から GLOBALを取り除いてみて下さい。
問題なくコンパイルはできるはずです。
その宣言には externをついているものとして扱われます。
つまり、
extern void boss_shot_main();
void boss_shot_main();
のどちらで書いても同じ扱いとなります。
試しに function.hの各プロトタイプ宣言から GLOBALを取り除いてみて下さい。
問題なくコンパイルはできるはずです。