• gcc编译器对宽字符的识别


          最早是使用VC++工具来学习C++,学的越多就越对VC挡住的我看不见的东西好奇,总想多接触一些开发环境,今日抽空摸索了一下CodeBlocks这个开源的IDE使用方法,配置的编译器是MinGW的gcc编译器,gcc编译多字节集的字符还没什么问题,但遇到宽字符,发现编译不通过,经过多方查找,发现gcc对宽字符的支持分规则同我用熟了的cl编译器有一些区别,具体用法如下:

            GNU   C/C++编译器gcc也可以正确支持wchar_t字符和字符串,但是源代码的保存格式必须符合下面条件:
            一:源代码文件的保存编码必须是UTF-8;
            二:UTF-8编码格式的源代码文件,不能有BOM标志头.
            只有源代码文件符合上面两个条件,gcc才会正确支持wchar_t字符和字符串.如果不符合上面两个条件的话,有可能会编译出错,有可能会产生错误的wchar_t字符和字符串.
            gcc在Windows平台下,wchar_t是16位类型,在Linux平台下,wchar_t是32位类型.
           
            另外,GCC提供了以下的参数开关来支持其它文字编码的源文件:
            a)-finput-charset=charset
                gcc在默认情况下,总是假设源代码的编码是UTF-8,如果是其它编码的源代码文件,源代码里面又用到了wchar_t的类型,则可以使用-finput-charset=charset这个参数来实现.例如通常使用GBK编码的源代码可以假如参数:-finput-charset=GBK
             b)-fwide-exec-charset=charset
                默认情况下,gcc在Windows平台下,宽字符串串常量的每个字符是16位UTF-16类型,在Linux平台下,宽字符串串常量的每个字符是32位UTF-32类型,            使用这个参数,可以改变宽字符串串常量的类型.例如在x86的机器环境,Linux操作系统下,要使例如 L"汉字" 编译后保存为UTF-16的字符串,则可以使用 -fwide-exec-charset=UTF-16LE

    备注:我后来的解决方法过程,是直接用记事本重新打开另存为UTF-8格式,编译通过,不过这样感觉好麻烦,我还得再试试其它方法,最后不理会源代码文件保存格式,只是在编译选项那里设置-finput-charset=GBK,这样也是可以的(Windows上的字符编码貌似总是GBK的).

    1 TCHAR szMsgText[ ] = TEXT("大家好!");
    2 TCHAR szMsgTitle[ ] = TEXT("提示!");

    http://www.cnblogs.com/guobbs/p/3654317.html

  • 相关阅读:
    【原】相煎何太急——input的blur事件与button的click事件
    【原】jQuery与CSS自动生成验证码
    【转】HTML转义字符大全
    【原】来自于一位前端“布道者”的建议
    【原】如何在jQuery中实现闭包
    【转】Web前端研发工程师编程能力飞升之路
    【原】git如何删除本地和远程的仓库
    H5不同样式新闻垂直滚动效果
    mui防止软键盘弹起方法
    js显示对象所有属性和方法的函数
  • 原文地址:https://www.cnblogs.com/findumars/p/5624858.html
Copyright © 2020-2023  润新知