【发布时间】:2013-03-01 04:43:51
【问题描述】:
在我的项目中,我有一个包含文件“buildversion.h”,其中包含版本号的定义。 为了使它更易于管理,我做了一些预处理器“魔术”
问题是,Visual Studio 资源文件编辑器的行为不像普通的编译器,所以我得到“错误”的条目
我的头文件:
#define MAJOR_VER_NUM 2
#define MINOR_VER_NUM 3
#define REV_NUM 9999
#define STR(x) #x // helper defines
#define XSTR(x) STR(x) // helper defines
#define XXX_FILE_VERSION MAJOR_VER_NUM,MINOR_VER_NUM,REV_NUM,0
#define XXX_PRODUCT_VERSION MAJOR_VER_NUM,MINOR_VER_NUM,REV_NUM,0
#define XX_FILE_VERSION_STRING XSTR(MAJOR_VER_NUM)", "XSTR(MINOR_VER_NUM)", "XSTR(REV_NUM)", 0"
#define ICOS_PRODUCT_VERSION_STRING XSTR(MAJOR_VER_NUM)", "XSTR(MINOR_VER_NUM)", "XSTR(REV_NUM)", 0"
int const MajorVersionNumber = MAJOR_VER_NUM;
int const MinorVersionNumber = MINOR_VER_NUM;
int const RevisionNumber = REV_NUM;
在我的“main.rc”文件中,我包含上面的标头,并在我编写的版本块中
VALUE "FileVersion", XXX_FILE_VERSION_STRING
这个条目的结果是:
2"、"3"、"9999"、0
如果我在普通 c++ 代码中使用上述头文件,则替换工作正常,我得到 p>
2、3、9999、0
正如预期的那样。
有没有办法在资源文件中完成这项工作?
【问题讨论】:
标签: string visual-studio visual-c++ c-preprocessor