【发布时间】:2008-11-04 13:08:29
【问题描述】:
我有三个密切相关的应用程序,它们是从相同的源代码构建的 - 比如说 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++ 中),但我仍然搞砸了,编译器没有保护我。
【问题讨论】:
标签: c++ c-preprocessor configuration-management software-product-lines