【问题标题】:What's the purpose of the "universal-character-name encountered in source" warning? [duplicate]“源代码中遇到的通用字符名称”警告的目的是什么? [复制]
【发布时间】:2012-07-21 04:53:04
【问题描述】:

可能重复:
How to address this instance of C4428 Visual C++ warning about a character literal?

如果我编译代码:

wchar_t c = L'\u00A0';

使用 /W4 标志,我收到警告:

警告 C4428:在源代码中遇到通用字符名称

我不明白的是,这个警告的目的是什么?它试图防止什么错误?

【问题讨论】:

  • 这看起来很相关,但对于那里的右值并不是特别有用。不过,您可能会觉得它很有趣:blogs.msdn.com/b/michkap/archive/2006/04/21/580316.aspx。也许它也建议使用实际字符。
  • 老实说,这看起来是我见过的最愚蠢的警告。从阅读的东西来看,它似乎没有任何意义。
  • 有一个#pragma 用于抑制特定警告,不是吗?这可能是使用它的时候了(带有适当的讽刺评论,说明为什么不需要它)。或许问题在于(这一小部分)微软是一家美国公司,并不认为美国以外的世界需要“有趣”的角色。
  • 通用字符名称的编码是实现定义的。

标签: c++ c visual-c++ literals


【解决方案1】:

这与错误无关。

据我了解,警告只是告诉您您使用了字符代码而不是实际字符。对于大多数字符来说,这只是为了让事情更具可读性,尽管在您的情况下,字符看起来与普通空间相同,因此使用代码实际上是一个好主意(甚至更好,我喜欢使用unicode 名称,所以它是 NO_BREAK_SPACE)。

无论哪种方式,人们都可以无休止地争论该警告是否真的对任何事情有用。或者你可以禁用那个特定的(可能还有更多你已经禁用的警告,比如关于未使用的内联等的警告)然后继续。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 2017-01-08
    • 2011-10-24
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多