在资源文件中使用宏

Using Macros in Resource File

本文关键字:资源 源文件      更新时间:2023-10-16

我正在尝试使用宏来自动生成C++项目的构建版本。

如果我做到以下几点,一切都会好起来。

版本控制.h

...
#define VERSION_MAJOR 1
#define VERSION_MINOR 0
...

 

MyApp.rc

...
#include "Versioning.h"
VS_VERSION_INFO VERSIONINFO
 FILEVERSION VERSION_MAJOR, VERSION_MINOR, 0, 0
 PRODUCTVERSION VERSION_MAJOR, VERSION_MINOR, 0, 0
 FILEFLAGSMASK 0x3fL
...

 

然而,如果我尝试包含任何更复杂的内容,例如数学,编译器会生成错误

#define VERSION_MAJOR (2 / 2)
error RC1013: mismatched parentheses
error RC2104: undefined keyword or key name: /

 

我需要在宏中使用更复杂的数学表达式、调用其他类、执行字符串比较等。

我的猜测是,我正在编写的宏并没有什么问题,而是资源文件处理宏的方式有问题。

有什么想法吗?

注意:我使用的是Visual Studio Ultimate 2013 Update 3。

资源编译器不如源代码编译器灵活。不能在资源脚本中使用复杂的宏。如果需要,则必须使用单独的预处理器来执行计算,并生成资源编译器所需的宏值。