﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-金庆的专栏-随笔分类-1. C/C++</title><link>http://www.cppblog.com/jinq0123/category/5137.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 19 Dec 2007 08:23:53 GMT</lastBuildDate><pubDate>Wed, 19 Dec 2007 08:23:53 GMT</pubDate><ttl>60</ttl><item><title>可重入和线程安全</title><link>http://www.cppblog.com/jinq0123/archive/2007/12/19/ReentrantAndThreadSafe.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Wed, 19 Dec 2007 07:15:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/12/19/ReentrantAndThreadSafe.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/39037.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/12/19/ReentrantAndThreadSafe.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/39037.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/39037.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 可重入函数要解决的问题是，不在函数内部使用静态或全局数据，不返回静态或全局数据，也不调用不可重入函数。线程安全函数要解决的问题是，多个线程调用函数时访问资源冲突。函数如果使用静态变量，通过加锁后可以转成线程安全函数，但仍然有可能不是可重入的，比如strtok。&nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/12/19/ReentrantAndThreadSafe.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/39037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-12-19 15:15 <a href="http://www.cppblog.com/jinq0123/archive/2007/12/19/ReentrantAndThreadSafe.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>boost::static_assert</title><link>http://www.cppblog.com/jinq0123/archive/2007/12/14/BoostStaticAssert.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Fri, 14 Dec 2007 02:02:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/12/14/BoostStaticAssert.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/38480.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/12/14/BoostStaticAssert.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/38480.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/38480.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: BOOST_STATIC_ASSERT是一个简单但常用的宏，顾名思义起到编译期断言的功效，可以通过它，在编译时对开发环境以及类型定义进行检查。此类型检测对程序运行时无任何效率和空间上的影响。在实现上，BOOST_STATIC_ASSERT宏利用c++规范中，对不完整类型即不可实例化的类型，在对其进行sizeof运算时编译错误的特性，完成功能。&nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/12/14/BoostStaticAssert.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/38480.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-12-14 10:02 <a href="http://www.cppblog.com/jinq0123/archive/2007/12/14/BoostStaticAssert.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>istream_iterator常见的错误说明</title><link>http://www.cppblog.com/jinq0123/archive/2007/12/12/istream_iterator_ErrorMsg.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Wed, 12 Dec 2007 03:41:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/12/12/istream_iterator_ErrorMsg.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/38293.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/12/12/istream_iterator_ErrorMsg.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/38293.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/38293.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 看到一段istream_iterator的使用代码，读取文件test.txt，将其中字符串输入到一个vector。STL中模板的大量使用，使得编译器的报错不知所云，让人对STL的应用望而却步。学习STL不仅要掌握STL中各种容器类，迭代器，算法，同时还要熟悉编译器常见的错误报告。&nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/12/12/istream_iterator_ErrorMsg.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/38293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-12-12 11:41 <a href="http://www.cppblog.com/jinq0123/archive/2007/12/12/istream_iterator_ErrorMsg.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>把private声明从.h文件移到.cpp文件</title><link>http://www.cppblog.com/jinq0123/archive/2007/11/09/PrivateImplInCpp.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Fri, 09 Nov 2007 04:07:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/11/09/PrivateImplInCpp.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/36189.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/11/09/PrivateImplInCpp.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/36189.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/36189.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在*.h文件中定义一个类时，理论上应该仅定义其公共接口，而不必声明其私有的成员，因为私有的成员属于实现部分，理应声明在.cpp文件中。 可是现有的C++标准是不支持将一个类的定义分到两个文件中去的。 有一个pimpl模式，可以变相完成这个要求。&nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/11/09/PrivateImplInCpp.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/36189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-11-09 12:07 <a href="http://www.cppblog.com/jinq0123/archive/2007/11/09/PrivateImplInCpp.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WMF SDK例程wmvcopy中的错误</title><link>http://www.cppblog.com/jinq0123/archive/2007/10/29/wmvcopyBugs.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Mon, 29 Oct 2007 06:47:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/10/29/wmvcopyBugs.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/35446.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/10/29/wmvcopyBugs.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/35446.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/35446.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: WMF SDK指Microsoft的Windows Media Format SDK，支持以下三大功能：ASF文件的生成（包括ASF数据的流化）、ASF文件的编辑和ASF文件的播放（包括ASF媒体流的播放）。目前版本是WMF SDK9。 wmvcopy是其一个例程，实现了从头部开始截取n秒另存为文件。但在使用中发现有些错误。所以应该另设一个标志：m_fMaxDuration，到达MaxDuration时就可以结束文件的读取，而不必一直读到文件尾。一可解决崩溃错误，二可提高效率。  &nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/10/29/wmvcopyBugs.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/35446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-10-29 14:47 <a href="http://www.cppblog.com/jinq0123/archive/2007/10/29/wmvcopyBugs.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>按NT服务运行程序</title><link>http://www.cppblog.com/jinq0123/archive/2007/10/09/RunFromService.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Tue, 09 Oct 2007 05:44:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/10/09/RunFromService.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/33812.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/10/09/RunFromService.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/33812.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/33812.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: XYNTService本身是个服务程序，它可以在INI文件中配置调用的程序，将多个程序运行起来。MS Windows 2000 SDK工具中有个srvany，好象就是能让任一个普通程序运行为服务。&nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/10/09/RunFromService.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/33812.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-10-09 13:44 <a href="http://www.cppblog.com/jinq0123/archive/2007/10/09/RunFromService.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++标准库与STL的关系</title><link>http://www.cppblog.com/jinq0123/archive/2007/09/30/CppLibVsStl.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Sun, 30 Sep 2007 13:44:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/09/30/CppLibVsStl.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/33267.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/09/30/CppLibVsStl.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/33267.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/33267.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: C 标准库与STL的关系。STL即标准模板库（Standard Template Library），它包括五大类组件：算法、容器、迭代器、函数对象、适配器。STL是C 标准库的一部分，但不是全部。C 标准库是std名字空间中的所有内容，就是那些不带.h的头文件，如。&nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/09/30/CppLibVsStl.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/33267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-09-30 21:44 <a href="http://www.cppblog.com/jinq0123/archive/2007/09/30/CppLibVsStl.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ACE与ASIO之间关于Socket编程的比较</title><link>http://www.cppblog.com/jinq0123/archive/2007/09/21/AceVsAsio.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Fri, 21 Sep 2007 02:27:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/09/21/AceVsAsio.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/32603.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/09/21/AceVsAsio.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/32603.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/32603.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ACE与ASIO之间关于Socket编程的比较。ASIO是基本Boost开发的异步IO库，封装了Socket，简化基于socket程序的开发。 5.事件分派处理：ACE主要是注册handler类，当事件分派时，调用其handler的虚挂勾函数。ASIO是基于函数对象的hanlder事件分派。基于ASIO开发应用，要求程序员熟悉函数对象，函数指针，熟悉boost库中的boost::bind。我个人觉得，如果应用socket编程，使用ASIO开发比较好，开发效率比较高。&nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/09/21/AceVsAsio.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/32603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-09-21 10:27 <a href="http://www.cppblog.com/jinq0123/archive/2007/09/21/AceVsAsio.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个模块如何处理异常</title><link>http://www.cppblog.com/jinq0123/archive/2007/08/13/ModuleExcept.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Mon, 13 Aug 2007 03:43:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/08/13/ModuleExcept.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/29898.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/08/13/ModuleExcept.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/29898.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/29898.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最理想，最好的用模块是没有异常，保证操作如预想的结果一致。<br><br>当操作无法成功完时，必然会产生错误，或异常。<br>一个是返回错误码，一个是抛出异常。&nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/08/13/ModuleExcept.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/29898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-08-13 11:43 <a href="http://www.cppblog.com/jinq0123/archive/2007/08/13/ModuleExcept.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>输出函数不应抛异常</title><link>http://www.cppblog.com/jinq0123/archive/2007/08/10/NoExportExcept.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Fri, 10 Aug 2007 08:36:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/08/10/NoExportExcept.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/29698.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/08/10/NoExportExcept.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/29698.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/29698.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: DLLs and libraries should handle all exceptions to prevent the display of errors and warnings through Windows dialogs. DLL输出函数抛异常通常会导致程序崩溃。而且错误很难定位。应用try/except包裹所有的输出函数。输出函数的参数也要严格检查。&nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/08/10/NoExportExcept.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/29698.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-08-10 16:36 <a href="http://www.cppblog.com/jinq0123/archive/2007/08/10/NoExportExcept.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Firefox的HTTP内容解压代码阅读</title><link>http://www.cppblog.com/jinq0123/archive/2007/07/09/HttpCompressConv.html</link><dc:creator>金庆</dc:creator><author>金庆</author><pubDate>Mon, 09 Jul 2007 04:13:00 GMT</pubDate><guid>http://www.cppblog.com/jinq0123/archive/2007/07/09/HttpCompressConv.html</guid><wfw:comment>http://www.cppblog.com/jinq0123/comments/27724.html</wfw:comment><comments>http://www.cppblog.com/jinq0123/archive/2007/07/09/HttpCompressConv.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jinq0123/comments/commentRss/27724.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jinq0123/services/trackbacks/27724.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 参考firefox-2.0.0.4-source<br>RFC2612 3.5节Content codings, 内容编码定义了三种内容压缩方式：<br>gzip, compress, deflate, 但也可以注册新的压缩方式。<br>deflate与gzip解压的代码几乎相同，应该可以合成一块代码。&nbsp;&nbsp;<a href='http://www.cppblog.com/jinq0123/archive/2007/07/09/HttpCompressConv.html'>阅读全文</a><img src ="http://www.cppblog.com/jinq0123/aggbug/27724.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jinq0123/" target="_blank">金庆</a> 2007-07-09 12:13 <a href="http://www.cppblog.com/jinq0123/archive/2007/07/09/HttpCompressConv.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>