C++ 在资源文件中使用宏

C++ 在资源文件中使用宏,c++,visual-studio,C++,Visual Studio,我尝试使用宏来自动生成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, VE

我尝试使用宏来自动生成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更新3。

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

这看起来是一个难看的解决方案:-/如果您对设置版本号有一些奇怪的要求,请编写一个程序,用“工作”命令写出一个文件版本和您需要的值。@crashmstr我正在尝试使用与Visual Studio用于自动生成.NET应用程序版本号相同的算法。@MingSlogar关键是,您需要将这些
#定义为常量,而不是公式。以某种方式获取数字,然后编写版本控制。h使用这些计算出的数字,然后构建应用程序。Microsoft资源编译器是而且一直是POS。它几乎没有功能,要求它执行最简单的
#define
之外的任何操作要求太高。