在 .rc 文件中,字符串按最多 16 个字符串的部分进行分组。
因此,在典型的 .rc 文件中,我们通常有这样的内容:
...
STRINGTABLE // section 1
BEGIN
IDS_SOMEID_1 "Some text 1"
IDS_SOMEID_2 "Some text 1"
IDS_SOMEID_3 "Some text 3"
END
STRINGTABLE // section 2
BEGIN
IDS_SOMEID_4 "Some text 4"
IDS_SOMEID_5 "Some text 5"
IDS_SOMEID_6 "Some text 6"
END
...
且某一节中字符串的 ID 仅相差至少 4 位。
我想知道为什么需要在 .rc 文件中明确指定这些部分。资源编译器可以完全处理这个问题,因此我们可以为每个 .rc 文件部分拥有一个字符串表,如下所示:
STRINGTABLE
BEGIN
IDS_SOMEID_1 "Some text 1"
IDS_SOMEID_2 "Some text 1"
IDS_SOMEID_3 "Some text 3"
IDS_SOMEID_4 "Some text 4"
IDS_SOMEID_5 "Some text 5"
IDS_SOMEID_6 "Some text 6"
END
有没有人给个合理的解释?
我在这里找到了一些(不充分的)解释:
我不知道这个发明最初的深层原因。也许是分配大小的问题。请记住 RC 文件是在 Windows 早期发明的。
但是STRINGTABLE的文档说:
RC 为每个部分分配 16 个字符串,并使用标识符值来确定哪个部分包含该字符串。标识符仅在底部 4 位不同的字符串放置在同一部分中。
Raymond Chen 将其命名为字符串“捆绑”:https://devblogs.microsoft.com/oldnewthing/20040130-00/?p=40813