一个 vc project 中,可能有很多地方需要用到版本号,比如 about 对话框.版本资源等.如果每次版本更改都一一去改变这些值,不但非常麻烦,而且有悖唯一原则.
先来看看几个预处理操作符 (preprocessor operators): 【程序编程相关:JAVA 编程规范】
巧妙地使用宏定义,可以很好地解决这个问题. 【推荐阅读:取得Windows版本号】
下面举例说一下怎么定义统一的版本宏. 【扩展信息:深入equals方法】
operator action stringizing operator (#) causes the corresponding actual argument to be enclosed in double quotation marks charizing operator (#@) causes the corresponding argument to be enclosed in single quotation marks and to be treated as a character (microsoft specific) token-pasting operator (##) allows tokens used as actual arguments to be concatenated to form other tokens简单说,# 就是使参数用引号包住,形成字符串;#@ 使参数用单引号包住,形成一个字符;## 是粘结符.这几个操作符从语言上来说比较晦涩,仔细看看 msdn 的例子,好好理解一下.
假设工程中有资源脚本文件 resource.rc,唯一的版本号码存放在 define.h 里.其它需要用到版本号的 cpp 文件均包含此文件.
先看看 define.h:
#define ver_major 2 #define ver_minor 2 #define ver_release 137 #define ver_build 1762 #define ver_version makelong(makeword(ver_major, ver_minor), ver_release) #define _stringizing(v) #v #define _verjoin(a, b, c, d) _stringizing(a.b.c.d) #define str_builddate text(__date__) #define str_buildtime text(__time__) ... 下一页