C/C++
巴依老爷
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
源文件编码方式
以下讨论两种常用编译器gcc,cl中对Unicode字面值的实现:GCCgcc中跟编码方式转换有关的三个编译选项:-finput-charset=charset,此选项指定源文件本身的编码方式,默认为UTF-8(有无BOM均可)。例如当我们的源代码文件保存为GBK时,则也应当将此选项的值指定为GBK。-fwide-exec-charset=charset,此选项指定宽字符或宽字符串的字面值常量的内部编码方式,默认为UTF-32或UTF-16,对应wchar_t的宽度。wchar_t的宽度依赖平台实现,win原创 2010-12-10 10:30:00 · 11372 阅读 · 5 评论 -
基本数据类型的长度
C/C++仅仅定义了这些基本数据类型之间的关系,并没有定义严格定义它们的字长。在不同的平台上,根据编译器不同的实现,它们的字长如下表所示:数据类型LP64ILP64LLP64ILP32LP32char88888short1616161616_int32N/A32N/AN/AN/Aint3264323216long6464323232long longN/AN/A64N/AN/Apointer6464643232在这张表中,LP64,ILP64,LLP64是64位平台上的字长模型,ILP32和LP32是32位原创 2010-12-20 15:24:00 · 992 阅读 · 0 评论 -
捕获输入流中的错误
程序经常会提供从标准输入流中输入的操作,但是如果其中发生错误,则有可能导致后续的读取失败。程序中应该判断输入流的状态,并在错误发生时,清除缓冲区,重置状态。C的解决方式: while(1) { int i; if (scanf("%d",&i)) { printf("ok:%d/n",i); if (666 == i) break; }原创 2010-12-23 12:26:00 · 1948 阅读 · 0 评论 -
编译boost
首先下载源代码包,解压之后,先得生成bjam——boost的构建工具。windows下如果已经安装了msvc,则只需运行一下bootstrap.bat,就会生成bjam.exe和project-config.jam这两个文件。如果用mingw的话,需要自己手动生成bjam.exe:去boost/tools/jam/src,执行build.bat gcc,即设置默认编译器为gcc。注意直接修改boost/bootstrap.bat 里的内容set toolset=gcc没有作用。如果成功,在bin.ntx86原创 2010-12-22 21:00:00 · 9306 阅读 · 1 评论 -
预处理宏定义
不同的编译器,库,条件编译时如何区分debug版本和release版本微软的编译器使用 _DEBUG 作为debug版本标准C库使用NDEBUG,作为release版本。比如如果定义了NDEBUG,则assert()函数将不会编译。原创 2011-01-25 11:18:00 · 6564 阅读 · 0 评论 -
STL容器
list<br />插入:Does not affect the validity of iterators and references. If an exception is thrown there are no effects.<br />插入复杂度:Insertion of a single element into a list takes constant time and exactly one call to the copy constructor of T. Insertion of原创 2011-01-29 22:21:00 · 2040 阅读 · 0 评论 -
asio
<br /><br />Create an io_service:<br /> asio::io_service io_service;<br />and some work to stop its run() function from exiting if it has nothing else to do:<br /> asio::io_service::work work(io_service);<br />Start some worker threads:<br /> boost::原创 2011-03-10 12:18:00 · 1939 阅读 · 0 评论
分享