软件版本号规范
一、软件版本号由四部分组成:
1、 主版本号 - X

2 、子版本号 - Y

3、 阶段版本号 - Z

4、日期版本号加希腊字母版本号(可选)

常用的希腊字母版本号:alpha、beta、RC、release。
举例:1.0.1.190628_beta
二、规则
重大变更升级,X需递增
增加新功能,Y需递增
修复bug,Z需递增
0.Y.Z 的版本号表明软件处于初始开发阶段,意味着 API 可能不稳定;1.0.0 表明版本已有稳定的 API。
注意:版本一经发布,不得修改其内容,任何修改必须在新版本发布

软件版本号宏定义的高级技巧

在编写程序的时候,经常会用到VERSION,用来表示程序的版本号
有的时候我们还希望里面加个日期,例如: "System V2.0.1.2017.9.13"

又有的时候我们只想读出数字版本号,例如2, 0, 1,有的时候又想如果想将里面的2, 0, 1这3 个数字提取出来,该怎么做呢?
通常做法是这样的:

#define MAINVER 2
#define SUBVER1 0
#define SUBVER2 1#define VERSTR  "System V2.0.1.2017.9.13"

如果想修改下版本号,即需要修改前面3 个数字宏,又要修改后面的字符串宏,最后还得将日期写上;

那有没有什么办法将工作量减小到最少,只要更改前面3 个宏就可以了呢?

答案当然是可以的了,请看:

#define MAINVER 2
#define SUBVER1 0
#define SUBVER2 1#define STR(s)     #s
#define VERSION(a,b,c)  "System V" STR(a) "." STR(b) "." STR(c) " "__DATE__
//#define VERSTR  "System V2.0.1.2017.9.13"
void main()
{printf("%s\n",VERSION(MAINVER,SUBVER1,SUBVER2));getch();
}

说明: 这个日期是当前文件被编译的生成日期,如果您没有修改这个文件,那日期是不会变的,我想您修改了代码也一定

不会忘记修改下版本号,所以这个日期字符串肯定是当前的日期;还有一点,这个日期的格式我目前找不到自定义的办法

如果有知道的欢迎留言告诉我~

C语言软件版本号组成和定义相关推荐

  1. C语言软件版本号宏定义的高级技巧

    在编写程序的时候,经常会用到VERSION,用来表示程序的版本号 有的时候我们还希望里面加个日期,例如: "System V2.0.1.2017.9.13" 又有的时候我们只想读出 ...

  2. 【必知 - 软件版本号如何定义及使用】

    大家好,好久没见.前段时间一直在找工作,很少更新. 这不,新的工作,新的奔头,一直努力熟悉. 我们的项目简单说是一款 数藏,虽简单说,但实际可不简单.感兴趣的话,就来看看吧,进入 -> 纳灵境 ...

  3. 在Linux下开发多语言软件(gettext解决方案)

    最近的项目出现了一个bug.项目是基于一个已有的成熟开源软件之上做修改的,新写了加解密库,用于为该成熟开源软件增添加解密功能.功能增加完成后效果都很好,可是就是中文出不来了,也就是说没办法自适应多语言 ...

  4. C语言之一些值得被定义为常用C语言头文件库的漂亮宏定义

    原文连接:https://mp.weixin.qq.com/s/OICAfQgMKWfBLuZbp2gCBw 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等. ...

  5. 语言 {软件开发概述}

    语言 {软件开发概述}; {编辑期,编译期,运行期} 定义 程序的3个阶段: . 编辑期: 在IDE里 写源代码; . 编译期: 源代码通过编译器变成了exe可执行文件 (二进制的); . 运行期: ...

  6. 项目管理之软件版本号

    项目管理之软件版本号 摘要: 软件的版本号不同,其版本就有区别,版本号大全,大家看一下对软件的各个版本也有所了解. 版本大全: alphal 内部测试版 beta 外部测试版 demo 演示版 Enh ...

  7. VC自动生成软件版本号

    VC自动生成软件版本号 flyfish 目的: 软件的版本有主版本号.子版本号.修正版本号.编译版本号 其中编译版本号与SVN服务器的版本号(Revision)自动同步. 环境 需要在本机安装Tort ...

  8. 各种软件版本号扫盲——Beta RC Preview release等

     1 .软件版本阶段说明 *Alpha 版:此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的 Bug 较多,需要继续修改. *Beta 版:该版 ...

  9. 软件版本号规范与命名原则

    1. 软件版本阶段说明 * Alpha版: 此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改. * Beta版: 该版本相对 ...

最新文章

  1. ProxyError: Conda cannot proceed due to an error in your proxy configuration
  2. Java多线程学习处理高并发问题
  3. 合并的路径Path.Combine
  4. 解决大众点评换设备无法用卷(你本次购买不符合活动规则)的问题
  5. 全球第三位艾滋病痊愈者出现,靠脐带血干细胞新疗法抵抗病毒,此前已患病9年...
  6. 158行代码!程序员复现DeepMind图像生成神器
  7. iscroll5实现一个下拉刷新上拉加载的效果
  8. html button 自动提交,html+js表单form验证自动提交的2种提交方式button和
  9. hiho1482出勤记录II(string类字符串中查找字符串,库函数的应用)
  10. 五、线程优先级和守护线程
  11. Android重写View并且自定义属性(二)
  12. Centos 7 密码重置
  13. 想成为测试工程师,这7件事你必须先知道
  14. tn文本分析语言(三):高级语法
  15. 计算机专业助我成长作文600,我在成长作文
  16. css的calc函数
  17. XF660R型号良田高拍仪接口开发,通过图片文件的二进制数据进行图片上传
  18. 计算机添加usb网络打印机,方便实用!教您如何简单地将USB打印机更改为无线打印机!...
  19. 【LeetCode】322. 零钱兑换 结题报告 (C++)
  20. 微信营销如何提升转化率与购买率

热门文章

  1. Linux 文件重命名
  2. bulk insert 服务器不支持代码页 65001
  3. 【数据分享】2023年全国A级景区数据(14847个景区)
  4. 基于vuex动态添加接口(含axios的封装)
  5. 案例拆解:花小猪邀请好友助力领优惠券
  6. 播放器插件实现系列 —— vlc
  7. Chrome谷歌浏览器中如何恢复已经关闭的网页?
  8. 2018计算机 第一次作业,计算机安全学-第四次实践作业-2018/4/17
  9. QWebEngineView无法输入中文
  10. 一文读懂ActivityThread