根据ISO/IEC 14882:2011(§2.14.3),character-literal,也称为常量,如下所示.
character-literal:
’ c-char-sequence ’
u’ c-char-sequence ’
U’ c-char-sequence ’
L’ c-char-sequence ’
...
c-char:
any member of the source character set except
the single-quote ’, backslash \, or new-line character
escape-sequence
universal-character-name
Run Code Online (Sandbox Code Playgroud)
乍一看,似乎直接放入unicode而不是在character-literal中使用通用字符名称是非法的.然而,大多数编译器,例如g ++和visual studio c ++,都不会对它感到烦恼,这有点令人困惑.无论标准如何,每个实现在编译开始之前是否会自动将这些unicode转换为通用字符名称?
看来我们可以通过包含所需的头文件来自由使用Windows API.但是,我无法理解这是如何可能的,因为头文件没有函数定义而是声明,这应该被认为是一个错误,因为它缺少实现细节.编译器以何种方式定位实现细节并将其映射到内存中?