在资源文件中使用宏

时间:2014-10-07 19:43:26

标签: c++ visual-studio

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

如果我执行以下操作,一切正常。

Versioning.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。

1 个答案:

答案 0 :(得分:1)

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