复合条件编译开关的使用CodeCake

正在做的项目随着开发的进行出现了众多的分支版本。
目前我们还是使用传统的编译开关的方法进行版本代码的区分。
最近遇到的问题是,有一段代码在两个分支版本中需要被xx,而在其他所有版本中不需要被编译。
而两个版本分别由两个编译项来表示,也就是说这两个版本可能共享部分代码。
所以留给我的选择是,要么把公用的代码再复制一份,分别以#if…#endif 包围然后进行编译;要么就是用更简单地方法只保留一份代码,同时共享给两个版本使用。
当时就在想,#if是否可以添加一些运算符进行一些多条件的比较呢。
回到家里,用Dev-C++测试了一下,果然成功。
代码如下:

#include <stdio.h>
#include <stdlib.h>

#define SW1_OPTION1     0
#define SW1_OPTION2     1
#define SW1_OPTION3     2

#define SW2_OFF         0
#define SW2_ON          1

#define COMPILE_SW1     SW1_OPTION2
#define COMPILE_SW2     SW2_ON

int main(int argc, char *argv[])
{
#if ((COMPILE_SW1 == SW1_OPTION2) && (COMPILE_SW2))
	printf("True result\n");
#else
	printf("False result\n");
#endif
	system("PAUSE");
	return 0;
}

第16行的代码进行的就是复合条件的编译开关,当2个条件都为True时,将执行第17行的代码,否则将执行第19行的代码。
经过测试,运行结果没有问题。

当然,各种比较运算符包括>,<,!=等等;各种逻辑运算符包括 ||="" 和="" !="">
类似代码如下:

#if ((COMPILE_SW1 > SW1_OPTION1) && !(COMPILE_SW2))
#if ((COMPILE_SW1 != SW1_OPTION1) || (COMPILE_SW2))

Responses to “复合条件编译开关的使用”

Leave a Reply

郑重声明:资讯 【复合条件编译开关的使用CodeCake】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——