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系统支持的所有可用的字符集编码。
最新文章
- 我的第一个HTML的程序
- IL命令
- javascript线程解释(setTimeout,setInterval你不知道的事)---转载
- Python按行读文件对比
- asp.net调用非托管dll,无法加载 DLL,找不到指定模块解决方法。
- C语言:类似linux内核的分等级DEBUG宏(打印宏)
- application19事件 20多少步骤 具体20多少只有微软知道!!!
- 基于Python的Webservice开发(二)-如何用Spyne开发Webservice
- ReadWriteLock读写锁(八)
- linux读取Windows的txt文件问题
- tail -f -n 0 /var/log/messages
- git 创建tag , 查看tag , 删除tag
- 在Android Studio添加本地aar包引用
- 20165214 预备作业3 Linux安装及学习
- 让Label等控件支持HTML格式的代码? 使用NSAttributedString:
- Android 开发服务类 01_ServletForXML
- 【Linux】LVM逻辑卷管理和RAID
- [收藏转]由于CredSSP加密Oracle修正 导致远程桌面报错处理
- ul标签的高度为0
- react-native第一次开发记录