读书人

是用宏仍是用代码来控制各个渠道的差异

发布时间: 2013-08-01 15:23:18 作者: rapoo

是用宏还是用代码来控制各个渠道的差异呢?
使用cocos2d-x 开发游戏,现在对接了很多个渠道,中间会因为渠道不同代码逻辑会有不同。
现在使用宏去控制这些代码,每个渠道定一个宏。在编译的时候 C_FLAG 中加上一个-D参数来区分。
但是这样的一个问题是,当接入的渠道增多了后,每个渠道需要单独编译一次。非常耗时!
另外,渠道多了后,代码中的宏也多了,搞得代码可阅读性降低!

后来想改为定义一个渠道的枚举,在逻辑不同的地方来判断,但是这样又在每次代码执行的时候增加了一次
判断。

比较纠结,看看大家有什么更好的办法吗? 宏 Cocos2d-x
[解决办法]
不同版本程序,我现在能想到三种方法:
1.程序里if...else...或者switch...case...等分支语句根据选择的版本走不同的流程;
2.不同的版本有不同的配置,这个就好比ANSI和UNICODE版本一样,一个只预定义了_MBCS,一个只预定义了_UNICODE,根据预定义不同,可以走不同的流程;
3.直接把工程分开,这两个工程没有任何联系。

1、2两种差不多,和3区别很大,我这么想的,如果这几个版本的区别不大,就可以使用1或2方法;若是区别很大,逻辑相关很多,那就使用3更方便。
[解决办法]
如果看重运行时的效率和可执行档的大小,用宏;
如果看重代码的可维护性,建议程序的逻辑处理。

读书人网 >C++

热点推荐