为什么MFC .rc文件有时会在末尾手动插入\ 0?

时间:2017-08-03 18:18:12

标签: c++ visual-c++ mfc

Within this article,我注意到\ 0被插入到#define语句中以构建版本字符串。我也在一些我正在维护的MFC项目中看到过它。在完成将版本资源移动到.rc2文件的过程中,我可以使用一个标题包括在我的所有项目中设置版本,我已经注意到了\ 0。在某些情况下,它不会导致任何问题,但在某些情况下,生成的编译文件的属性窗口将显示一个尾随引号(")。删除\ 0似乎没有伤害任何东西,但我不明白为什么他们会被需要。希望有一些老派的MFC专家了解这一点,可以解释是否建议删除\ 0。

示例:

    VALUE "FileVersion", VERSION_STR"\0" // <-- adding it here causes the version to show in the properties dialog as 1, 0, 4, 1" which is odd.  
    VALUE "InternalName", "DaHelper\0" // <-- what is the \0 for? Isn't it already a string literal null terminated without adding \0?

1 个答案:

答案 0 :(得分:0)

可能没人能对它有真正的答案。

此外,文档中没有显示规则。 使用字符串时,samples in the MSDN(您的链接)显示相同的定义。只显示了一些。但我重新检查了真正的旧资源16次。它总是一样的。 VALUE类型都以\ 0字符终止。字符串在资源编辑器中为此类资源定义的接缝不会自动\ 0终止。