我已经看到我的Visual C 项目具有以下声明,可以使用逗号而不是用于版本的点:
#define FILEVER 11,0,2,0
#define PRODUCTVER 11,0,2,0
#define STRFILEVER "11, 0, 2, 0 "
#define STRPRODUCTVER "11, 0, 2, 0 "
此处的MS文章在逗号中也具有相同的值(实际上,上述声明基于该文章)。我们为什么在这里使用逗号?当我打开编译的文件属性时,我将FileVersion视为11.0.2.0,但Productersion为11,0,2,0-我的QA朋友说这是一个错误:)。我缺少某些标准或某些内部机制吗?
在前两个定义中,因为Microsoft资源文件语法调用逗号。对于后来的两个定义,Microsoft Convention也将其贴在逗号上。微软想要有所不同。
文件版本取自非弦变体,并在文件资源管理器中使用点打印。产品版本是从字符串中获取的。您可能自己可以用点编写字符串。这是一个字符串,没关系。但是您必须手动编辑.rc
文件,Visual Studio将编写逗号。
至于前两个定义,我可以看到一般C 中选择逗号的原因。如果您有11.0.2.0
,则在任何上下文中都是语法错误,您唯一可以做的就是将其转换为使用#
操作员的字符串。但是使用逗号,您可以将其扩展到数组或结构的定义。像int version[] = { 11,0,2,0 };
。如果您想在代码中进行版本检查,这很有用。