6

我已经看到我的 Visual C++ 项目有以下使用 COMMAS 而不是 DOTS 版本的声明:

#define FILEVER        11,0,2,0
#define PRODUCTVER     11,0,2,0
#define STRFILEVER     "11, 0, 2, 0\0"
#define STRPRODUCTVER  "11, 0, 2, 0\0"

这里的MS文章也有逗号的相同值(实际上上面的声明是基于那篇文章)。为什么我们在这里使用 COMMAS?当我打开编译的文件属性时,我看到 FileVersion 为 11.0.2.0 但 ProductVersion 为 11,0,2,0 - 我的 QA 朋友说这是一个错误:)。我是否缺少某些标准或某些内部机制?

4

1 回答 1

6

在前两个定义中,因为 Microsoft 资源文件语法要求逗号。对于后两个定义,Microsoft 约定也坚持使用逗号。微软可能想要与众不同。

文件版本取自非字符串变体,并在文件资源管理器中用点打印。产品版本取自字符串。您可能可以自己编写带点的字符串。这是一个字符串,应该没关系。但是您必须.rc手动编辑该文件——Visual Studio 将编写逗号。

至于前两个定义,我可以看到在一般 C++ 中选择逗号的原因。如果你有11.0.2.0,这将是任何上下文中的语法错误,你唯一能做的就是使用#运算符将​​其转换为字符串。但是使用逗号,您可以将其扩展为数组或结构的定义。喜欢int version[] = { 11,0,2,0 };。如果您想在代码中检查版本,这很有用。

于 2012-10-22T07:48:02.247 回答