codeblocks如何支持_tmain?可移植代码的编码推荐
codeblocks默认源代码文件编码根据OS而定,编译时编码UTF-8。 在你不更改任何codeblocks配置时: 在WINDOWS中:源代码——WINDOWS-936(即GBK),编译后文件默认UTF-8 而输出windows会按GBK来解释 ,所以从GBK->UTF-8->GBK就是乱码; 在LINUX中:源代码——UTF-8,自然从源代码到编译到输出都是UTF-8,因此没有乱码; WINDOWS中:设置如下settings->compiler->Other options中增加2条命令 -finput-charset=GBK编译时用GBK格式 不指定默认UTF-8 -fexec-charset=GBK生成执行文件时用GBK格式 不指定默认UTF-8
UTF-8是变长编码,一个字符可能是1至4字节,处理起来不太方便。 于是Linux等平台也提供了wchar_t类型,只不过它是32位的,在Windows平台中它是16位。
为了保证代码的可移植性,推荐使用UTF-8编码来保存代码文件。 因现在Linux等类UNIX平台默认使用UTF-8编码,gcc等编译器也是默认使用UTF-8编码。 而且它们既支持“不带BOM的UTF-8”(byte order mark,字节序标记),又支持“带BOM的UTF-8”。 VC++ 2003(或更高)开始支持“带BOM的UTF-8”编码的代码文件,但不支持“不带BOM的UTF-8”编码的代码文件 ,会被误认为系统默认编码(如简体中文平台上会误认为GBK编码)。
1.4 _tmain入口函数问题 标准C使用main函数作为程序入口,其格式为——int main(int argc, char* argv[]) VC++考虑到到TCHAR类型的命令行参数,于是又定义_tmain程序入口,其格式为——int _tmain(int argc, TCHAR* argv[]) 目前VC++对_tmain的支持较好,而MinGW等编译器对_tmain较差,其只支持C标准的main。 如果想用_tmain则需要在工程中引入 https://github.com/coderforlife/mingw-unicode-main.h文件 // tchar.h中有类似如下的定义 #ifdef _UNICODE #define _tmain wmain #define _tWinMain wWinMain #else #define _tmain main #define _tWinMain WinMain #endif
C 和 C++ 的标准库分别有自己的 locale 操作方法, C 标准库的 locale 设定函数是 setlocale(), 而 C++ 标准库有 locale 类和流对象的 imbue() 方法 #include <locale.h> char* setlocale(int category, const char* locale);
在Linux下,可以使用locale -a 命令查看系统中所有已配置的 locale。 用不带选项的 locale 命令查看当前 Shell 中活动的 locale。 用 locale -m 命令查看locale系统支持的所有可用的字符集编码。
codeblocks如何支持_tmain?可移植代码的编码推荐的更多相关文章
- 传感器(2)常用api简介及列出当前设备支持的传感器代码
Android SDK提供了Android sensor framework,可以用来访问当前Android设备内置的传感器. ASF提供了很多类和接口,可以帮助我们完成各种与传感器有关的任务. 例如 ...
- 支持Git的代码托管网站
支持Git的代码托管网站: https://github.com/https://code.google.com http://www.codeplex.com/ http://git.oschina ...
- Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信息.例如 ...
- C++静态代码分析工具推荐——PVS-Studio
长假归来,最近一直没更新,节前本来就想写这篇了,一直到今天才有时间. 关于静态代码分析在维基百科上可以查到很详细的介绍:https://en.wikipedia.org/wiki/List_of_to ...
- 代码高亮插件推荐——SyntaxHighlighter++
SyntaxHighlighter++这个插件的最大的优点就是可以在编辑器的下方有一个输入框,里面可以输入代码,然后插入到文章中.就不用编辑文章的时候,在可视化和文本之间来回切换了.非常适合不熟悉ht ...
- redis安装 phpredis Jedis 扩展的实现及注意事项,php,java,python相关插件安装实例代码和文档推荐
redis安装 phpredis Jedis 扩展的实现及注意事项,php,java,python相关插件安装实例代码和文档推荐 1.Redis 官方网站下载: http://redis.io/dow ...
- 洗礼灵魂,修炼python(3)--从一个简单的print代码揭露编码问题,运行原理和语法习惯
前期工作已经准备好后,可以打开IDE编辑器了,你可以选择python自带的IDLE,也可以选择第三方的,这里我使用pycharm--一个专门为python而生的IDE 按照惯例,第一个python代码 ...
- Discuz代码研究-编码规范
Discuz中的编码规范很值得PHP开发人员借鉴.里面既介绍了编码时代码标记,注释,书写规则,命名原则等方面基础的内容,对代码的安全性,性能,兼容性,代码重用,数据库设计,数据库性能及优化作了阐述,这 ...
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...
随机推荐
- 记录-配置tomcat不加项目名即可访问项目
环境:tomcat 在eclipse中 打开Servers 下的server.xml文件,在最下方你会看到类似 <Context docBase="/vankeplatform&q ...
- ArcGIS API for JavaScript Bookmarks(书签)
说明:本篇博文介绍的是ArcGIS API for JavaScript中的 Bookmarks(书签) ,书签的作用是,把地图放大到一个地方 添加书签,书签名称可以和地图名称一直,单击标签 地图会定 ...
- ubuntu 17 编译BTCoin
一. 安装开发环境 sudo apt-get update sudo apt-get install build-essential libtool autotools-dev autoconf pk ...
- iOS 符号化崩溃日志
1.获取一下三个文件 1. crash报告(.crash文件) 2. 符号文件 (.dsymb文件) 3. 应用程序文件 (appName.app文件,把IPA文件后缀改为zip,然后解压,Pay ...
- python基础-第六篇-6.4模块混战
我们之前接触多的编程方式就是函数式编程,而且喜欢就一个文件里写完所有的程序代码,这样做在前期感觉还不错,不过一旦你的程序变复杂,在易读性和排错方面就感觉好吃力,功能界限不明显,那今天我们就来讲讲怎么用 ...
- ppm图像相关
PPM图像格式介绍 直接拿具体的数据来说明是最直接的,使用ue打开ppm文件,采用的都是十六进制asc码表示的,这里要注意地址00000000h中的最后一个字母是始终不变的,这原来没注意晕了我好久,第 ...
- 第6条:在单次切片操作内,不要同时指定start、end和stride
核心知识点: 1.使用负步进可以反转取值字符串及ASCII. 2.stride最好不要与start和end用在一起,会降低代码可读性. 除了基本的切片操作之外,python还提供了somelist[s ...
- 数据库连接理解——JDBC
需求:数据库操作 数据是:用户信息 1.连接数据库 JDBC Hibernate 2.操作数据库 c create r read u update d delete 3.关闭数据库连接 interf ...
- dojo 官方翻译 dojo/json 版本1.10
官方地址:http://dojotoolkit.org/reference-guide/1.10/dojo/json.html#dojo-json require(["dojo/json&q ...
- Linux内核源码中的likely和unlikely释疑【转】
本文转载自:https://my.oschina.net/armsky/blog/15320 ikely()与unlikely()在2.6内核中,随处可见,那为什么要用它们?它们之间有什么区别呢? 首 ...