我有三个密切相关的应用程序,它们是从相同的源代码构建的——比如说 APP_A、APP_B 和 APP_C。APP_C 是 APP_B 的超集,而 APP_B 又是 APP_A 的超集。
到目前为止,我一直在使用预处理器定义来指定正在构建的应用程序,它的工作原理是这样的。
// File: app_defines.h
#define APP_A 0
#define APP_B 1
#define APP_C 2
然后我的 IDE 构建选项指定(例如)
#define APPLICATION APP_B
...在源代码中,我会有类似的东西
#include "app_defines.h"
#if APPLICATION >= APP_B
// extra features for APPB and APP_C
#endif
但是,今天早上我开枪打死了自己,只是从一个文件中省略了 #include "app_defines.h" 行,这浪费了很多时间。一切编译正常,但应用程序在启动时与 AV 一起崩溃。
我想知道处理这个问题的更好方法是什么。以前,这通常是我认为可以使用#define 的少数几次之一(无论如何,在 C++ 中),但我仍然搞砸了,编译器没有保护我。