不同语言条件编译的使用

当你在写程度的时候,碰到一段代码,你希望它在本地测试的时是这样,而到了正式环境要那样的时候,比如说一个数据库的连接用IP址,一般来说都会有开发数据库和产品数据库之分,更多的情况还会有一个测试(给QA或客户测试用的)数据库:

1. string ip="localhost";  //本地开发时用的连接到 localhost

2. string ip="10.1.10.1";  //上正式环境用的连接到 10.1.10.1

对于这种情况,一般人都能想到的办法就是,如果在本地开发调试用,就用第一行,而把第二行注释掉;如果要拿去正式环境用,编译之前得到第一行注释掉,而用第二行。这样是否有点麻烦呢?每次都得想着做这个切换,如果是开发环境与正式环境网络说隔离还好说,如果是连通的,就有较大的可能性开发时误操作了正式环境的数据库,而且经常要打开这行,注释那行很罗嗦的。

这个时候就应该想到条件编译,条件编译(Conditional compilation)是采用编译前预处理的方式,编译器根据设定某个常量来决定编译哪些代码而舍弃哪些代码,不编译到中间或目标代码中。

例如对于上面的代码,可以在编译选项中或是在某个代码中设定一个条件或常量(宏定义),如 DEBUG,或在代码中写成 #define DEBUG ,然后代码中只需要写成 阅读全文 >>