String Visual Studio资源编译器字符串合并
在我的项目中,我有一个包含文件“buildversion.h”,其中包含版本号的定义。 为了使它更易于管理,我做了一些预处理器“魔术” 问题是,VisualStudioResourceFile编辑器的行为与普通编译器不同,因此我得到了“错误”的条目 我的头文件:String Visual Studio资源编译器字符串合并,string,visual-studio,visual-c++,c-preprocessor,String,Visual Studio,Visual C++,C Preprocessor,在我的项目中,我有一个包含文件“buildversion.h”,其中包含版本号的定义。 为了使它更易于管理,我做了一些预处理器“魔术” 问题是,VisualStudioResourceFile编辑器的行为与普通编译器不同,因此我得到了“错误”的条目 我的头文件: #define MAJOR_VER_NUM 2 #define MINOR_VER_NUM 3 #define REV_NUM 9999 #define STR(x) #x // helper defines
#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
正如所料有什么方法可以在资源文件中执行此操作吗?这是适合我的代码,替换为使用与您相同的宏名称 保持版本号和str帮助程序不变,然后:
#define XXX_FILE_VERSION_DOT MAJOR_VER_NUM.MINOR_VER_NUM.REV_NUM.0
#define XXX_FILE_VERSION_COMMA MAJOR_VER_NUM,MINOR_VER_NUM,REV_NUM,0
#define XXX_FILE_VERSION_DOT_STR XSTR(XXX_FILE_VERSION_DOT)
#define XXX_FILE_VERSION_COMMA_STR XSTR(XXX_FILE_VERSION_COMMA)
然后在.rc中,我发现您只需要在FILEVERSION
部分使用逗号形式,如下所示:
FILEVERSION XXX_FILE_VERSION_COMMA
VALUE "FileVersion", XXX_FILE_VERSION_DOT_STR
稍后在StringFileInfo
块中,您将使用虚线字符串表单版本,如下所示:
FILEVERSION XXX_FILE_VERSION_COMMA
VALUE "FileVersion", XXX_FILE_VERSION_DOT_STR