C语言中宽字符使用
前言
在更新.Net Runtime(CoreCLR)源码时,看到这一段代码,宽字符(wachar_t/WCHAR)改为字符(char).
//WCHAR数组 改为 char数组,这一块主要是存放GUID的(是英文字符,没有涉及到国际化(其他语言,比如说中文),不可能是UNICODE(UTF-8/UTF-6)字符
WCHAR wzGuid[40];
// ⬇⬇
CHAR zGuid[40];
WCHAR改为CHAR有哪些优点,就是内存占用最少降低一半(Windows wchar_t是16位2个字节).甚至是四分之三(Linux上wchar_t是32位4个字节).
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
int main(int argc, char* argv[])
{
printf("WCHAR size=%zu\n", sizeof(WCHAR)); //WCHAR就是wchar_t 是用typedef wchar_t WCHAR重新定义的类型
printf("char size=%zu\n", sizeof(CHAR)); //CHAR是char 使用typedef char CHAR
system("pause");
return 0;
}
在Windows上打印类型大小:
在Linux上打印wchar_t和char类型大小:
秋风
2022-10-09