在编写程序的时候,经常会用到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语言软件版本号组成和定义

    软件版本号规范 一.软件版本号由四部分组成: 1. 主版本号 - X 2 .子版本号 - Y 3. 阶段版本号 - Z 4.日期版本号加希腊字母版本号(可选) 常用的希腊字母版本号:alpha.bet ...

  2. C语言 常量和宏定义

    C语言:常量和宏定义 什么是常量 常量的类型 定义符号常量(宏定义) 标识符是什么 字符串常量 代码 什么是常量 在程序运行时,值不能被改变的量,称之为常量. 常量的类型 整型常量:520,1314, ...

  3. 【C语言】高级宏定义

    前言 宏定义分为不带参数的宏定义和带参数的宏定义,不带参数的宏定义就是普通的宏定义,带参数的宏定义则稍稍复杂.下面将结合一些例子讲解这些显得比较高级的宏定义. 文章目录 前言 一.高级宏定义 1.#d ...

  4. C语言中关于宏定义的学习

    1.C语言中宏定义的使用 2.GCC官方文档 3.C语言宏定义的几个坑和特殊用法 转载于:https://www.cnblogs.com/Brandon0807/p/11146344.html

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

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

  6. C语言中#、##宏定义的用法

    一.#的用法 #用于编译器编译过程进行预处理. 1.宏定义 #define ON 1#ifndef _PARA_ #define _PARA_ #enddef#ifdef _PARB_ #define ...

  7. 【C语言进阶】 宏定义实现字符串引用

    宏定义实现字符串引用 原理 最简单的引用策略 使用#进行转义 原理 用宏定义实现字符串引用: 这种做法在编译的时候直接给宏名所对应的字符串 分配了一个内存地址空间,可以进行字符串输出.地址打印.指针操 ...

  8. C语言 带参数宏定义中 # 和 ## 知识点总结、代码分析

    目录 一.宏定义中 "#"知识点 1.直接转换字符串,不展开. 2.转换出的结果一定是"字符串". 二.宏定义中 ## 知识点 1.应用场景 2."# ...

  9. C语言字符串、宏定义及主函数介绍

    希望你每天醒来都是阳光的,不会因为别人的几句话.几个表情和几个举止,影响自己的心情,好好生活,总会遇见美好的事... ----  网易云热评 一.字符串 1.字符串声明 #include <st ...

最新文章

  1. linux服务器存放规划,规划适用于 Linux 和 UNIX 服务器的客户端部署
  2. 1.2-Nginx编译安装
  3. Spring 实践 -AOP
  4. 网络游戏:为什么失败
  5. gpu tensorflow 怎么看是否安装成功_安装keras模块以及使用GPU加速
  6. 开源2D图形库/图形框架
  7. “华为”和“荣耀”手机有什么区别?
  8. c语言输出所有英文字母,菜鸟求助,写一个随机输出26个英文字母的程序
  9. vijos1053 用spfa判断是否存在负环
  10. python编程之处理GB级的大型文件
  11. uni-app 商城源码
  12. php $stmt,PHP在stmt准备和执行语句后获取结果
  13. Mac升级python版本
  14. sqlmanager mysql5_SQL Manager for MySQL
  15. 笔记本电脑黑屏 笔记本开机黑屏 笔记本黑屏怎么办
  16. C++小作业——简单通讯录设计
  17. Spring学习笔记(五):JDBCTemplate+事务管理
  18. IBM SPSS Modeler使用技巧 ----参数及全局变量的使用
  19. 对话机器人在瓜子的实践
  20. 远程命令/代码执行漏洞(RCE)总结

热门文章

  1. 视觉感知特性【2】一些视觉感知因子
  2. C语言练习题:递归实现指数函数
  3. learnLinux
  4. 我拿流年,乱了浮生:伤感QQ空间日志
  5. 未明学院:量化金融项目实战,成为FinTech风口下掌握数据分析技能的复合型人才!
  6. Codeforces #158B Taxi
  7. 工业相机和镜头的参数理解、选型、打光方案总结(附参考案例)
  8. 安卓源码,安卓开发,跑步打卡项目app源码,包括源码和简单文档
  9. tomcat打印日志 linux,Tomcat关闭日志输出
  10. 一文读懂BLDC电机控制算法