关于Visual Studio的条件编译

最近把Visual Studio 2013 RC升级到了Visual Studio 2013 RTM,顺手查了一下关于软件版本的知识,了解到通常软件的正式版比测试版要小一些。原因在于在测试版期间,程序员添加了很多的测试用来排查软件中的bug,这些测试代码会被编译到软件中,软件通常较大,而这些测试代码对软件本身而言不是必须的,在正式版,程序员会设置编译参数,是编译器不编译测试的代码片段,因此正式版的软件往往比测试版小得多。

那么如何设置编译参数呢,下面有两种方式实现:

第1种方式,将条件编译写入代码之中,比如:

 1 #include <stdio.h>
 2 #define DEBUG
 3 #ifdef DEBUG
 4 #define STDOUT_beta printf
 5 #define STDOUT_rtm //
 6 #else
 7 #define STDOUT_beta //
 8 #define STDOUT_rtm printf
 9 #endif // DEBUG
10 
11 
12 int main(void)
13 {
14     STDOUT_bate("This is Visual Studio 2013 Beta!\n");
15     STDOUT_rtm("This is Visual Studio 2013 RTM!\n");
16     return 0;
17 }

如果将第2行注释,则输出的程序为

不注释则输出的程序为:

这样就能控制编译器是否将测试代码编译到软件中了。

第2种方式,修改编译环境,具体方法如下:

 选择项目-右键属性-配置属性-C/C++-预处理器

在预处理器定义的那一行添加你的宏定义。

比如:DEBUD;

点击确定,这样上述代码的第2行#define DEBUG就会由编译器自动添加了,将第2行注释掉,重新编译,运行结果如下:

 

对比1、2两种实现方式,往往在实际项目中,模块与模块之间的衔接比较复杂,我们不可能再每一个文件前面写入或者删除相应的宏,所以比较流行的做法是使用第2种方式。

visual studio的条件编译就是这样,如果你使用过gcc/g++,你可以更加透彻的看到条件编译的实现机制。

 

 

 

 

 

转载于:https://www.cnblogs.com/ligelaige/p/3379550.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值