Unichar, char, wchar_t

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

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

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

 

 

转载于:https://www.cnblogs.com/whyandinside/p/3387186.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/402198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫入门四urllib库的高级用法

1.设置headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些 Headers 的属性。 首先,打开我们的浏览器,调试浏览器…

进程上下文、中断上下文及原子上下文

谈论进程上下文 、中断上下文 、 原子上下文之前,有必要讨论下两个概念: a -- 上下文 上下文是从英文context翻译过来,指的是一种环境。相对于进程而言,就是进程执行时的环境; 具体来说就是各个变量和数据,…

HandlerThread用法

区分Handler和HandlerThreadHandler实例可以在主线程创建,也可以在子线程创建。在子线程中创建时通过Looper,以下示例: public class MainActivity extends AppCompatActivity { HandlerThread handlerThread; Override protected v…

PHP快速排序及其时间复杂度

<?phpfunction quickSort(&$arr, $l, $r) {if (count($arr)<2 || $l>$r) return;$tmp_l $l;$tmp_r $r;$privot $arr[$r];while($tmp_l<$tmp_r) {while($arr[$tmp_l] < $privot && $tmp_l<$tmp_r) $tmp_l; //内部没有$tmp_l <$tmp_r的判断…

Python爬虫入门五URLError异常处理

本节在这里主要说的是 URLError 还有 HTTPError&#xff0c;以及对它们的一些处理 1.URLError 首先解释下 URLError 可能产生的原因&#xff1a; 网络无连接&#xff0c;即本机无法上网连接不到特定的服务器服务器不存在 在代码中&#xff0c;我们需要用 try-except 语句来…

Linux 文件系统与设备文件系统 (二)—— sysfs 文件系统与Linux设备模型

提到 sysfs 文件系统 &#xff0c;必须先需要了解的是Linux设备模型&#xff0c;什么是Linux设备模型呢&#xff1f; 一、Linux 设备模型 1、设备模型概述 从2.6版本开始&#xff0c;Linux开发团队便为内核建立起一个统一的设备模型。在以前的内核中没有独立的数据结构用来让内…

Python爬虫入门六Cookie的使用

为什么要使用 Cookie 呢&#xff1f; Cookie&#xff0c;指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据&#xff08;通常经过加密&#xff09; 比如说有些网站需要登录后才能访问某个页面&#xff0c;在登录之前&#xff0c;你想抓取某个页面内容…

有得必有失

上次也说道Ruby on Rails 是一个很不错的框架。本人也想去研究一翻&#xff0c;我已经不再替别人写程序了。 当编程变成一门兴趣的时候&#xff0c;而不是吃饭的依据。我觉得我需要跟着我的心走。 1&#xff1a;我现在的工作环境是在LINUX下&#xff0c;我一次次的折腾mono好吧…

mybatis下log4j使用

1. log4j jar包&#xff08;mvnrepository&#xff09; 2. log4j.properties文件 log4j.properties内容&#xff1a; log4j.rootLoggerDEBUG, stdout, logfile    log4j.appender.stdoutorg.apache.log4j.ConsoleAppender    log4j.appender.stdout.layoutorg.apache…

Python爬虫入门七正则表达式

已经搞定了怎样获取页面的内容&#xff0c;不过还差一步&#xff0c;这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢&#xff1f;下面就开始介绍一个十分强大的工具&#xff0c;正则表达式 1.了解正则表达式 正则表达式是用来匹配字符串非常强大的工具&#xff0c;在其…

Linux 文件系统与设备文件系统 (一)—— udev 设备文件系统

一、什么是Linux设备文件系统 首先我们不看定义&#xff0c;定义总是太抽象很难理解&#xff0c;我们先看现象。当我们往开发板上移植了一个新的文件系统之后&#xff08;假如各种设备驱动也移植好了&#xff09;&#xff0c;启动开发板&#xff0c;我们用串口工具进入开发板&a…

CSS 如何让Table的里面TD全有边框 而Table的右左边框没有

比如这样一个CSS.td3{font-size: 14px;color: #FFFFFF;background-color: #000000;BORDER-RIGHT: #f6f6f6 1px solid; //显示右边框为1px&#xff0c;如果不想显示就为0pxBORDER-TOP: #f9f9f9 0px solid; //显示上边框为1px&#xff0c;如果不想显示就为0pxBORDER-LEFT: #f9f9f…

情人节,教大家使用css画出一朵玫瑰花。

情人节到了&#xff0c;给大家来一朵高端的玫瑰花。 在网上看到的一个canvas实现的玫瑰花&#xff0c;效果很好&#xff0c;但是代码被压缩过&#xff0c;也没有注释&#xff0c;看的云里雾里的。 今天我教大脚用CSS来实现一朵玫瑰花。 先看效果 首先我们画出一个花瓣 1、画出一…

Python爬虫利器一Requests库的用法

之前我们用了 urllib 库&#xff0c;这个作为入门的工具还是不错的&#xff0c;对了解一些爬虫的基本理念&#xff0c;掌握爬虫爬取的流程有所帮助。入门之后&#xff0c;我们就需要学习一些更加高级的内容和工具来方便我们的爬取。那么这一节来简单介绍一下 requests 库的基本…

Windows窗口样式

windows样式有很多种&#xff0c;不同的windows&#xff0c;windows控件接受不同的样式。如Combo box接受下以样式&#xff1a;WS_CHILD AlwaysWS_VISIBLE UsuallyWS_DISABLED RarelyWS_VSCROLL To add vertical scrolling for the list box in the combo boxWS_HSCROL…

Linux 字符设备驱动开发基础(六)—— VFS 虚拟文件系统解析

一、VFS 虚拟文件系统基础概念 Linux 允许众多不同的文件系统共存&#xff0c;并支持跨文件系统的文件操作&#xff0c;这是因为有虚拟文件系统的存在。虚拟文件系统&#xff0c;即VFS&#xff08;Virtual File System&#xff09;是 Linux 内核中的一个软件抽象层。它通过一些…

初识 es6

es6 可能出来已经有一段时间了&#xff0c;但是我到今天才发现他的好&#xff0c;却不是很了解他&#xff0c;也不知道各个浏览器的兼容性怎么样&#xff1f;今天就把他们都弄明白。 新增命令 let ES6新增了let命令&#xff0c;用来声明变量。它的用法类似于var&#xff0c;但是…

Python爬虫利器四PhantomJS的用法

大家有没有发现之前我们写的爬虫都有一个共性&#xff0c;就是只能爬取单纯的 html 代码&#xff0c;如果页面是 JS 渲染的该怎么办呢&#xff1f;如果我们单纯去分析一个个后台的请求&#xff0c;手动去摸索 JS 渲染的到的一些结果&#xff0c;那简直没天理了。所以&#xff0…

从零开始学习Hadoop--第1章 Hadoop的安装

Hadoop的安装比较繁琐&#xff0c;有如下几个原因&#xff1a;其一&#xff0c;Hadoop有非常多的版本&#xff1b;其二&#xff0c;官方文档不尽详细&#xff0c;有时候更新脱节&#xff0c;Hadoop发展的太快了&#xff1b;其三&#xff0c;网上流传的各种文档&#xff0c;或者…

vim使用—实现程序的自动补齐(C语言)

使用过Source Insight的人一定对它的自动补全功能印象深刻&#xff0c;在很多的集成开发环境中&#xff0c;也都支持自动补全。vim做为一个出色的编辑器&#xff0c;这样的功能当然少不了。至于如何实现程序自动补全&#xff0c;网上教程很多。这里&#xff0c;我将自己配置过程…