現在、2つのc ++プロジェクトがあり、同じソースファイルとヘッダーファイルの多くを共有しています。それらの1つはゲームサーバーであり、もう1つはクライアントです。私のクラスのいくつかは、クライアントまたはサーバーに固有の関数を持っているため、そのうちの1つに対してのみコンパイルする必要があります。しかし、私はこれについてどうやって行くのかわかりません。これまでの私の試みは次のとおりです。
Client.h
#define IS_CLIENT
(main関数を含む)および#define IS_SERVER
Server.hで使用します。他のヘッダーがそれらに必要だったため、これは失敗し#include
ました(したがって、何かをコンパイルしたいときにすべてのヘッダーを変更する必要がありました)ここでCompileType.hを使用
#include "CompileType.h"
すると、IS_CLIENTまたはIS_SERVERのいずれかが定義されます。これは以前の方法以外の大きな改善ですが、コンパイルするたびにファイルを変更する必要があります。
#ifdef
使用された試みとその周辺の両方の試み#endif
は、.cppファイルの関数定義を選択します。
考えられる解決策は、可能であれば#define
、グローバル規模で何かを行うことです(したがって、すべてのソースファイルとヘッダーファイルに影響します)。IDEの(Code :: Blocks)設定には、まだ見たことのないものがあるかもしれません。
この問題についての洞察をいただければ幸いです。