找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3954|回复: 0
收起左侧

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

[复制链接]
ID:235086 发表于 2017-9-23 13:59 | 显示全部楼层 |阅读模式
在编写程序的时候,经常会用到VERSION,用来表示程序的版本号

有的时候我们还希望里面加个日期,例如: "System V2.0.1.2017.9.13"


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

  1. #define MAINVER 2  
  2. #define SUBVER1 0  
  3. #define SUBVER2 1  
  4.   
  5. #define VERSTR  "System V2.0.1.2017.9.13"  
复制代码

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



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

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

  1. #define MAINVER 2  
  2. #define SUBVER1 0  
  3. #define SUBVER2 1  
  4.   
  5. #define STR(s)     #s   
  6. #define VERSION(a,b,c)  "System V" STR(a) "." STR(b) "." STR(c) " "__DATE__  
  7. //#define VERSTR  "System V2.0.1.2017.9.13"  
  8.   
  9.   
  10. void main()  
  11. {  
  12.   printf("%s\n",VERSION(MAINVER,SUBVER1,SUBVER2));  
  13.   getch();  
  14. }  
复制代码

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

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

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


评分

参与人数 1黑币 +5 收起 理由
qwerty1267 + 5

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表