gpt4 book ai didi

c++ - 可以为资源文件#define 一个包含非 ANSI 字符的文字字符串吗?

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:35 25 4
gpt4 key购买 nike

我有一个 .h 文件,它由我的构建脚本生成并由资源文件 #included,但由于 (tm) 符号而无法构建:

#define PRODUCT_NAME Acme Widget™ 1.2.3

我得到的错误是 CommonAssemblyInfo.h(7): error RC2018: unknown character '0xe2'

很明显,我可以通过使用 (TM) 解决它,但我更愿意使用“正确”符号。可以这样做吗?


更新

我应该更完整地描述问题,为此我深表歉意。事实证明我忽略了一个重要的细节:有问题的头文件被资源文件包含,因此错误来自资源编译器。我正在更新这篇文章的标题以反射(reflect)这一事实。

最佳答案

C11 具有 UTF-8 编码字符串文字的语法。对于您的特定字符串,它看起来像这样(假设源或至少它的这一部分以 UTF-8 编码):

#define PRODUCT_NAME u8"Acme Widget™ 1.2.3"

C 不提供其基本字符集之外的字符出现在宽/Unicode 字符串文字之外的源文件中,尽管某些实现可能接受它们作为扩展。

另一种方法是将编码的字节嵌入到普通字符串文字中,或者实际上嵌入到原始宏替换文本中:

#define PRODUCT_NAME Acme Widget\xE2\x84\xA2 1.2.3

然而,省略字符串定界符并没有多大用处,因为十六进制转义语法仅在字符串和整数字 rune 字的上下文中才有意义。

然而,最可移植的是使用 Unicode 转义,正如@chux 在评论中所建议的那样。然而,在那种情况下,我认为将整个字符串作为 utf-8 字符串文字没有任何缺点:

#define PRODUCT_NAME u8"Acme Widget\u2122 1.2.3"

关于c++ - 可以为资源文件#define 一个包含非 ANSI 字符的文字字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42518169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com