gpt4 book ai didi

c - 通配符风格的 C 预处理器技巧

转载 作者:行者123 更新时间:2023-12-05 01:58:56 26 4
gpt4 key购买 nike

我有很多编译标志可以为不同的客户配置我的程序。例如: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) && ...

如果可以应用正则表达式,那就更酷了。

最佳答案

与其使用宏名称,不如将宏名称设为表示功能的位模式。例如

#define FEAT_VCORNERS        0x01
#define FEAT_VPANEL 0x02
#define FEAT_DOOR_FULL_PANEL 0x04

好的,所以它限制了您只能使用 32 个单独的功能 - 数量不多,但可能足够了

然后为每个客户定义他们具有的功能。模式是否重复并不重要

#define CUST_A (FEAT_VCORNERS)
#define CUST_B (FEAT_VCORNERS)
#define CUST_C (FEAT_VPANEL | FEAT_DOOR_FULL_PANEL)
#define CUST_D (FEAT_VCORNERS | FEAT_VPANEL)

在构建输入中,您可以定义 -DCUST=CUST_D。在代码中,你只需要测试

#if CUST & FEAT_VCORNERS
...
#endif

关于c - 通配符风格的 C 预处理器技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68140282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com