之前总结了一些关于字符表示,以及字符串的知识。

现在在看看一些关于编译器支持的知识。

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上还有这个问题。

最新文章

  1. Make My GitHub Pages
  2. C# 基础(5)--字符串
  3. C# 基础(3)
  4. 基数排序(radix sort)
  5. etcd学习记录
  6. Delphi中实现MDI子窗体(转)
  7. POJ 1523 SPF (割点,连通分量)
  8. javaWeb项目中的路径格式 请求url地址 客户端路径 服务端路径 url-pattern 路径 获取资源路径 地址 url
  9. Java容器解析系列(8) Comparable Comparator
  10. selenium中iframe的切换
  11. OAuth2 token
  12. item 1:理解template类型的推导
  13. python 爬虫第三方库
  14. windows server 域分发与分配软件
  15. as3.0加载swf并控制
  16. linux用户和权限详解
  17. hihocoder #1071 : 小玩具
  18. 数学图形(2.14)Spherical helix曲线
  19. YARN机制
  20. Linux挂载Win共享文件夹_VmwareTools

热门文章

  1. Laravel多对多简析
  2. css slice和splice
  3. hdu-----(2807)The Shortest Path(矩阵+Floyd)
  4. SAP销售订单状态修改(审核) 计划行自动产生需求,产生MD04需求
  5. Laravel
  6. 大作业关于(“有爱”youi)的简介
  7. jquery中ajax常用方法
  8. linux bash: sqlplus: command not found 错误处理
  9. 斐波那契博弈(Fibonacci Nim)
  10. ubuntu 设置静态ip