我们正在分发一个定期更新的Cocoa框架。我们将在每个版本中更新版本号。 Apple文档似乎表明版本号应该是连续递增的整数。我们以多种格式分发输出,框架只是其中之一。我们宁愿不必为我们的框架维护一个单独的编号系统。
我们并不关心框架版本号的精确格式,只要它们在产品发生变化时发生变化,并以正确,明智和预期的方式运行。我正在寻找一种避免运行单独的版本号计数器的方法。
一个建议是,对于产品版本12.34.56,我们可以简单地删除这些点,并说框架版本是123456(具有适当的零填充)。
答案 0 :(得分:4)
据我所知,这个要求的原因是你可以进行如下宏观检查:
#if FRAMEWORKNAME_VERSION >= 123456
// some stuff
#else
// some other stuff
#endif
这些数字不需要是连续的,你建议的方案是非常明智的:
#define MAKE_VERSION(MAJOR,MINOR,PATCH) ((MAJOR*10000)+(MINOR*100)+PATCH)
我还建议除了定义版本之外,还要为每个版本定义常量......
#define FRAMEWORKNAME_VERSION_1_0_0 MAKE_VERSION(1,0,0)
#define FRAMEWORKNAME_VERSION_1_0_1 MAKE_VERSION(1,0,1)
这样,你可以多种方式检查......:
#if FRAMEWORKNAME_VERSION >= MAKE_VERSION(1,0,1)
// 1.0.1 and later
#else
// Before 1.0.1
#endif
或者:
#if defined(FRAMEWORKNAME_VERSION_1_0_1)
// 1.0.1 and later
#else
// Before 1.0.1
#endif
您应满足的关键要求是:
除了整数表示之外,如果要提供版本的字符串表示,请务必继续;但是,我强烈建议您使用整数表示,因为它简化了比较并允许在预处理器中检查版本。