c++ - 在资源文件中使用宏

标签 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, 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。

最佳答案

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

关于c++ - 在资源文件中使用宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26243945/

相关文章:

c++ - 安全 SSL 连接错误 : unknown protocol | bad hostname lookup

c++ - 把一个类的序列化放到一个DLL中

c++ - 给定一个从 0 到 n 的整数 vector ,但不是全部包含在内,我如何有效地获取未包含的整数?

c++ - 直接访问 VTABLE 会出现未定义的错误

c++ - 如何在感兴趣的区域细化cgal中的网格

c# - 不使用visual studio制作解决方案文件

全息镜头中的 C++ dll

c# - 无法使用 Open XML SDK 创建文档

c# - Office VSTO Word 2003 项目不断尝试自动转换为 2007

.net - 如何在 .net 框架内的方法上设置断点