C++ 在资源文件中使用宏
我尝试使用宏来自动生成C++项目的构建版本。 如果我做到以下几点,一切正常 版本控制.hC++ 在资源文件中使用宏,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
...
#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
之外的任何操作要求太高。