いくつか疑問があります。
1,DXライブラリの関数extern int AppLogAdd( const TCHAR *String , ... ) ;
の定義を直接このヘッダに書いてもコンパイルエラーが出てしまいます。理由と解決策を教えてください。
(DXLib.hをインクルードせずに必要な関数宣言だけこのヘッダのインクルードで使えるようにしたい)
2,個々のソースファイルでのインクルードをなるべく減らせるように書き方を工夫してみたんですが、
改良したほうがいい点などはありますか?
// グローバル変数。グローバル定数も自動でインクルード。
# ifndef IG_EXTERN_CPP
# define IG_EXTERN_CPP
# include "const.h"
# ifdef EXTERN_CPP // Extern.cppで実態を宣言するためのマクロ
# define Extern
# include "Image.h"
# include "Input.h"
# include "Own.h"
# include "Enemy.h"
# include "EnemyBullet.h"
# include "md5.h"
# include "GameProperty.h"
JOYSTATE lcJoy1, lcJoy2;
Image lcCv;
Own lcown1;
Own lcown2;
OwnBulletManage lcOBulManage;
EnemyManage lcEneManage;
EnemyBulletManage lcEBulManage;
MD5 lcmd5;
Score lcscore;
JOYSTATE &Joy1 = lcJoy1, &Joy2 = lcJoy2;
Image &Cv = lcCv;
Own &own1 = lcown1;
Own &own2 = lcown2;
OwnBulletManage &OBulManage = lcOBulManage;
EnemyManage &EneManage = lcEneManage;
EnemyBulletManage &EBulManage = lcEBulManage;
MD5 &md5 = lcmd5;
Score &score = lcscore;
# else
//
struct JOYSTATE;
class Image;
class Own;
class OwnBulletManage;
class EnemyManage;
class EnemyBulletManage;
class MD5;
class Score;
//
extern JOYSTATE &Joy1, &Joy2;
extern Image &Cv;
extern Own &own1;
extern Own &own2;
extern OwnBulletManage &OBulManage;
extern EnemyManage &EneManage;
extern EnemyBulletManage &EBulManage;
extern MD5 &md5;
extern Score &score;
# endif
// 通常終了
void AppTermination(); // main.cpp
// 強制終了用
# define DefForceTermination { AppLogAdd("User Mes: ForceTermination FileName = %s , Line = %d\n",__FILE__,__LINE__ ); AppTermination(); }
// このマクロはDXLib.hが必要なので注意
# endif