多字节字符

编译器识别并支持其他字符 (扩展字符集) ,您可以在字符串文字和字符常量中有意义地使用这些字符。 对扩展字符的支持包括 多字节字符集多字节字符 是其位表示适合多个字节的字符。 要指示编译器将多字节字符集识别为源输入,请确保使用 -qmbcs 选项进行编译。

多字节字符可以出现在以下任何上下文中:
  • 字符串字面值和字符常量。 要声明多字节文字,请使用以 L为前缀的宽字符表示。 例如:
    wchar_t *a = L"wide_char_string";
    wchar_t b = L'wide_char';

    包含多字节字符的字符串基本上与不包含多字节字符的字符串相同。 通常,允许在多字节字符所在的任何位置使用宽字符,但它们与同一字符串中的多字节字符不兼容,因为它们的位模式不同。 在允许的情况下,可以在同一字符串中混合单字节和多字节字符。

  • 预处理器伪指令。 以下预处理器伪指令允许多字节字符常量和字符串字面值:
    • #define
    • #pragma comment
    • #include
    #include 伪指令中指定的文件名可以包含多字节字符。 例如:
    #include <multibyte_char/mydir/mysource/multibyte_char.h>
    #include "multibyte_char.h"
    
  • 宏定义。 由于字符串字面值和字符常量可以是 #define 语句的一部分,因此在类似对象的宏定义和类似函数的宏定义中也允许使用多字节字符。
  • # 和 ## 运算符。
  • 程序注释。
以下是使用多字节字符的限制:
  • 标识中不允许使用多字节字符。
  • 多字节字符的十六进制值必须在所使用的代码页范围内。
  • 不能在宏定义中混用宽字符和多字节字符。 例如,不允许将宽字符串与多字节字符串并置的宏扩展。
  • 不允许在宽字符和多字节字符之间进行分配。
  • 不允许连接宽字符串和多字节字符串。