【发布时间】:2021-06-26 07:45:22
【问题描述】:
我有很多编译标志可以为不同的客户配置我的程序。
例如:MODE_A_1、MODE_A_2、MODE_B_1、...MODE_AB_54、...
我真的很想要一些预处理器技巧,让我可以编写这样的伪代码:
#ifdef MODE_A_.*
不必键入每个 MODE_A_.. 出现:
#if defined(MODE_A_1) && defined(MODE_A_2) && ...
如果可以应用正则表达式会更酷。
【问题讨论】:
-
如果需要定义任何
MODE_A_标志,则增强构建以定义MODE_A。这对于任何现代构建系统都应该很简单。 -
问题是我不仅有 2 个参数(字母和数字),而且还有更多。我必须写下所有的组合数
-
不,问题是您混合了功能标志和目标。您只需要构建系统(或某处的标头)来启用基于目标的实际功能标志列表。然后,您的所有条件都可以依赖于一个相关的功能标志。
-
@Useless 这就是 Boost 使用的。我认为 Windows.h 也是这样做的
标签: c c-preprocessor wildcard