我目前有两个 c++ 项目,它们共享许多相同的源文件和头文件。其中一个是游戏服务器,另一个是客户端。我的一些类具有客户端或服务器独有的功能,因此只能为其中之一编译。但是,我不确定该怎么做。到目前为止,我的尝试是:
在Client.h
#define IS_CLIENT
(包括 main 函数)和#define IS_SERVER
Server.h 中使用。这失败了,因为其他头文件必须使用#include
它们(所以当我想编译某些东西时,我最终不得不修改所有头文件)使用
#include "CompileType.h"
where CompileType.h 定义 IS_CLIENT 或 IS_SERVER。这是与以前的方法不同的一项重大改进,但仍然让我在想要编译时更改文件。
两种尝试都使用#ifdef
并#endif
围绕 .cpp 文件中的选择函数定义。
如果可能的话,一个可能的解决方案是#define
在全球范围内(因此它会影响所有源文件和头文件)。我的 IDE (Code::Blocks) 设置中可能还有一些我还没有看到的东西。
对此问题的任何见解将不胜感激。