Unichar, char, wchar_t
2024-08-30 18:12:39
之前总结了一些关于字符表示,以及字符串的知识。
现在在看看一些关于编译器支持的知识。
L"" Prefix
几乎所有的编译器都支持L“” prefix,一个字符串如果带有L“”prefix,意味着这个字符串中的字符都被作为wide char存储,但是根据OS的不同这里的wide char又各有不同,比如在Windows上默认使用UTF-16表达Unicode,而MacOSx和Linux使用UTF-32表达Unicode,也就是默认情况下:wchar_t在Windows可用于存储UTF-16的字符,长度为2个字节;而在Linux上往往用于存储UTF-32在字符,长度为4个字节。
尽管OS有其默认实现,但有时还是需要使用非默认的情况,比如在Linux上使用UTF16,在Windows上使用UTF32。现实是由于wchar_t在Windows上只能是16bit的,无法支持UTF32,如果需要就只能全部自己做,比如将wchar_t定义为32位,wcslen等函数也都重写。Linux提供了一些使用UTF16的支持,比如在编译时,如果指定-fshort-wchar就可以把wchar_t转化为16bit的,L""Prefix也会将后跟的字符串表达为UTF16。但是Linux并没有提供wcslen等函数的支持,一旦指定-fshort-wchar,wcslen等函数都被标记为poison,不允许使用,也就是得自己实现wcslen等函数。
Note:使用-fshort-wchar时,Code中已经写好的sizeof是正确的,但是如果在debugger中调用sizeof,就有可能是错的,XCode5上还有这个问题。
最新文章
- Make My GitHub Pages
- C# 基础(5)--字符串
- C# 基础(3)
- 基数排序(radix sort)
- etcd学习记录
- Delphi中实现MDI子窗体(转)
- POJ 1523 SPF (割点,连通分量)
- javaWeb项目中的路径格式 请求url地址 客户端路径 服务端路径 url-pattern 路径 获取资源路径 地址 url
- Java容器解析系列(8) Comparable Comparator
- selenium中iframe的切换
- OAuth2 token
- item 1:理解template类型的推导
- python 爬虫第三方库
- windows server 域分发与分配软件
- as3.0加载swf并控制
- linux用户和权限详解
- hihocoder #1071 : 小玩具
- 数学图形(2.14)Spherical helix曲线
- YARN机制
- Linux挂载Win共享文件夹_VmwareTools