ZerOx4Cの日記だったもの

インポートだけしました

extern宣言分岐についてメモ

最近大学祭向けのゲームを作ってる。
1作目は「C# + SDL.NET + 自作ライブラリ」でやってるだけあってあっという間に先日完成、あとは細かいところを気付いたときに手直しすれば良い感じ。


問題は2作目なんだけど、こちらは大学のサークルに入ってから始めた「C++ + DXライブラリ」なのでなかなか手こずっている。
DXライブラリは使いやすいと思うけど、いかんせんTTSneo→VisualBasicC#とプログラミングをやってきたZerOxにとって、C++のあまりに複雑な(えらくソフトに言ったがようは汚い)文法は痙攣して倒れそうなほど。(ビクンビクン
特にインクルード関連のエラーがゲロ吐きそう。再定義してんじゃねーぞコノヤロー!


サークルのプログラミング講座で龍神録プログラミングの館がオススメされていたが、要するに全部なぞって作るとそのまんま同じものが出来るので、一応多分きっといくつかゲームを作ってきてはいるZerOxにとっては少し物足りない。
・・・というか最後までやってたら時間ねーし!


眠くなってきたので端折る。
第5章で解説されているテクニックを使ってextern宣言を楽しようと思ったら「再定義されています」のエラーで死亡したので色々考えた結果今からメモるコードで解決というわけ。(端折ったなぁ。

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


//
// ここでGLOBALにしたいやつをモリモリ宣言
//


// ↑ここまでは龍神録プログラミングの館にて解説されているものそのまんま
// ↓ここが追加
#undef GLOBAL_INSTANCE


こうすると、このヘッダーファイルをどういう順序でインクルードしても最後はGLOBAL_INSTANCEがundefされるので綺麗に動いてくれるようだ。
まぁC++歴4ヶ月程度の素人の言葉なので、ちげーよバーカするときはオブラート100枚くらいで包んでお願いします。おやすみ。