【发布时间】:2017-08-04 14:55:26
【问题描述】:
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?
【问题讨论】:
-
字符串完全按照 RC 文件中的输入插入(没有终止零)。如果在处理它们时需要将字符串以零结尾,则需要在资源字符串中包含零。
-
那么为什么键 null 没有终止呢?查看对话框资源,我在引号中看不到额外的 \0 。在 microsoft 示例中,他们在宏定义中添加了 \0。那不是已经为空终止的字符串文字吗?这只是标准的 C/C++。
-
不,这是一个 RC 文件 - 不同的规则。
标签: c++ visual-c++ mfc