﻿<?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++博客-八叶草(徐怀移)-随笔分类-C++</title><link>http://www.cppblog.com/byc/category/15415.html</link><description>学习资料记录</description><language>zh-cn</language><lastBuildDate>Wed, 20 Jul 2011 15:53:23 GMT</lastBuildDate><pubDate>Wed, 20 Jul 2011 15:53:23 GMT</pubDate><ttl>60</ttl><item><title>_countof(x) sizeof(x)/sizeof(element). </title><link>http://www.cppblog.com/byc/archive/2011/07/20/151454.html</link><dc:creator>八叶草</dc:creator><author>八叶草</author><pubDate>Wed, 20 Jul 2011 02:10:00 GMT</pubDate><guid>http://www.cppblog.com/byc/archive/2011/07/20/151454.html</guid><wfw:comment>http://www.cppblog.com/byc/comments/151454.html</wfw:comment><comments>http://www.cppblog.com/byc/archive/2011/07/20/151454.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/byc/comments/commentRss/151454.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/byc/services/trackbacks/151454.html</trackback:ping><description><![CDATA[使用_countof(x)来取代sizeof(x)/sizeof(element). _countof将会正确的计算元素个数，而且如果x是一个指针，编译器将会发出一个警告(来提醒程序员,仅针对C++编译)<br /><img src ="http://www.cppblog.com/byc/aggbug/151454.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/byc/" target="_blank">八叶草</a> 2011-07-20 10:10 <a href="http://www.cppblog.com/byc/archive/2011/07/20/151454.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gettickcount[转]</title><link>http://www.cppblog.com/byc/archive/2011/06/09/148376.html</link><dc:creator>八叶草</dc:creator><author>八叶草</author><pubDate>Thu, 09 Jun 2011 14:15:00 GMT</pubDate><guid>http://www.cppblog.com/byc/archive/2011/06/09/148376.html</guid><wfw:comment>http://www.cppblog.com/byc/comments/148376.html</wfw:comment><comments>http://www.cppblog.com/byc/archive/2011/06/09/148376.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/byc/comments/commentRss/148376.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/byc/services/trackbacks/148376.html</trackback:ping><description><![CDATA[<div align="center">
<h1 class="aTitle">跨平台(WIndows, Linux, VxWorks) getTickCount实现</h1></div>
<table width="97%" align="center">
<tbody>
<tr>
<td width="120">[日期：2011-02-13]</td>
<td align="center">来源：Linux社区&nbsp; 作者：Linux</td></tr></tbody></table>
<div id="content">
<div>在c/c++代码中，有时需要实现计时功能，比如某个时刻开始计时，然后到另一时刻时，计算距开始计时的时刻毫秒数。</div>
<div>&nbsp;</div>
<div>通过在起始时刻和停止时刻分别调用下面的代码，返回的时间相减，便可获得这段时间的毫秒数，其跨Windows、Linux、VxWorks三个平台。</div>
<p>&nbsp;</p>
<p>#ifdef WIN32<br />#define OS_WINDOWS WIN32<!--IWMS_AD_BEGIN--></p>
<table border="0" width="97%" align="center">
<tbody>
<tr>
<td colspan="3">
<div align="center"><script language="javaScript" type="text/javascript" src="../../system/system60.js"></script></div></td></tr></tbody></table>
<!--IWMS_AD_END--><br />#include &lt;windows.h&gt;<br />#endif<br />#ifdef LINUX<br />#include &lt;unistd.h&gt;<br />#include &lt;sys/time.h&gt;<br />#include &lt;netinet/in.h&gt;<br />#endif<br />#ifdef VXWORKS<br />#include "vxworks.h"<br />#include &lt;tickLib.h&gt;<br />#include &lt;sysLib.h&gt;<br />#endif 
<p>&nbsp;</p>
<p>#define ULONAG unsigned long</p>
<p>ULONGA getTickCount(void)<br />{<br />ULONGA currentTime;<br /><font style="background-color: #ffc000">#ifdef WIN32<br />currentTime = GetTickCount();<br />#endif</font><br /><font style="background-color: #b7dde8">#ifdef LINUX<br />struct timeval current;<br />gettimeofday(&amp;current, NULL);<br />currentTime = current.tv_sec * 1000 + current.tv_usec/1000;<br />#endif</font><br /><font style="background-color: #e5b9b7">#ifdef OS_VXWORKS<br />ULONGA timeSecond = tickGet() / sysClkRateGet();<br />ULONGA timeMilsec = tickGet() % sysClkRateGet() * 1000 / sysClkRateGet();<br />currentTime = timeSecond * 1000 + timeMilsec;<br />#endif</font><br />return currentTime;<br />}</p></div><br /><img src ="http://www.cppblog.com/byc/aggbug/148376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/byc/" target="_blank">八叶草</a> 2011-06-09 22:15 <a href="http://www.cppblog.com/byc/archive/2011/06/09/148376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>预定义宏</title><link>http://www.cppblog.com/byc/archive/2010/11/15/133663.html</link><dc:creator>八叶草</dc:creator><author>八叶草</author><pubDate>Mon, 15 Nov 2010 07:24:00 GMT</pubDate><guid>http://www.cppblog.com/byc/archive/2010/11/15/133663.html</guid><wfw:comment>http://www.cppblog.com/byc/comments/133663.html</wfw:comment><comments>http://www.cppblog.com/byc/archive/2010/11/15/133663.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/byc/comments/commentRss/133663.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/byc/services/trackbacks/133663.html</trackback:ping><description><![CDATA[<p>ANSI C:<br>__STDC_HOSTED__&nbsp;&nbsp;&nbsp;&nbsp;编译器符合ANSI C标准<br>__STDC__&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实现了所有C标准库<br>__<strong style="BACKGROUND: #ffff66; COLOR: #000">STDC</strong>_VERSION__<br>__LINE__<br>__FILE__<br>__DATE__<br>__TIME__</p>
<p>C++:<br>__cplusplus</p>
<p>GCC:<br>__GNUC__ <br>__GNUC_MINOR__ <br>__GNUC_PATCHLEVEL__<br>__GNUG__&nbsp;&nbsp;&nbsp; equivalent to testing (__GNUC__ &amp;&amp; __cplusplus). </p>
<p>MinGW:<br>__MINGW32__<br>__STDC__<br>__GNUC__<br>_WIN32, __WINNT__, __MINGW32__, _X86_, i386, __GNUC__</p>
<p>VC:<br>_WIN32<br>_MSC_VER<br>_ATL_VER<br>_DEBUG&nbsp;&nbsp;&nbsp; Defined when compiling with /LDd, /MDd, /MLd, and /MTd. <br>_M_IX86<br>_MT&nbsp;&nbsp;&nbsp; Defined when /MD or /MDd (Multithreaded DLL) or /MT or /MTd (Multithreaded) is specified.&nbsp; <br>_UNICODE</p>
<p>CYGWIN:<br>__CYGWIN32__</p>
<p>Intel Compiler:<br>__INTEL_COMPILER</p>
<p>Borland:<br>__WIN32__<br>__BORLANDC__</p>
<img src ="http://www.cppblog.com/byc/aggbug/133663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/byc/" target="_blank">八叶草</a> 2010-11-15 15:24 <a href="http://www.cppblog.com/byc/archive/2010/11/15/133663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC++ 类成员函数 stdcall cdecl thiscall</title><link>http://www.cppblog.com/byc/archive/2010/11/13/133514.html</link><dc:creator>八叶草</dc:creator><author>八叶草</author><pubDate>Sat, 13 Nov 2010 04:16:00 GMT</pubDate><guid>http://www.cppblog.com/byc/archive/2010/11/13/133514.html</guid><wfw:comment>http://www.cppblog.com/byc/comments/133514.html</wfw:comment><comments>http://www.cppblog.com/byc/archive/2010/11/13/133514.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/byc/comments/commentRss/133514.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/byc/services/trackbacks/133514.html</trackback:ping><description><![CDATA[<p>class Test<br>{<br>public:<br>&nbsp;void __stdcall Fun1(int){</p>
<p>&nbsp;}</p>
<p>&nbsp;void __cdecl Fun2(int){</p>
<p>&nbsp;}</p>
<p>&nbsp;void Fun3(int){</p>
<p>&nbsp;}</p>
<p>};</p>
<p><br>int _tmain(int argc, _TCHAR* argv[])<br>{<br>&nbsp;Test t;<br>&nbsp;t.Fun1(1);<br>&nbsp;t.Fun2(2);<br>&nbsp;t.Fun3(3);</p>
<p>&nbsp;return 0;<br>}<br><br>&nbsp;void __stdcall Fun1(int){<br>004113C0&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp&nbsp; <br>004113C1&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp,esp&nbsp; <br>004113C3&nbsp; sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esp,40h&nbsp; <br>004113C6&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebx&nbsp; <br>004113C7&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esi&nbsp; <br>004113C8&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edi&nbsp; </p>
<p>&nbsp;}<br>004113C9&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edi&nbsp; <br>004113CA&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esi&nbsp; <br>004113CB&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebx&nbsp; <br>004113CC&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esp,ebp&nbsp; <br>004113CE&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp&nbsp; <br>004113CF&nbsp; ret&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp; <br><br><br><br>&nbsp;void __cdecl Fun2(int){<br>004113E0&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp&nbsp; <br>004113E1&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp,esp&nbsp; <br>004113E3&nbsp; sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esp,40h&nbsp; <br>004113E6&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebx&nbsp; <br>004113E7&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esi&nbsp; <br>004113E8&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edi&nbsp; </p>
<p>&nbsp;}<br>004113E9&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edi&nbsp; <br>004113EA&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esi&nbsp; <br>004113EB&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebx&nbsp; <br>004113EC&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esp,ebp&nbsp; <br>004113EE&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp&nbsp; <br>004113EF&nbsp; ret&nbsp; <br><br><br>&nbsp;void Fun3(int){<br>00411400&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp&nbsp; <br>00411401&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp,esp&nbsp; <br>00411403&nbsp; sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esp,44h&nbsp; <br>00411406&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebx&nbsp; <br>00411407&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esi&nbsp; <br>00411408&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edi&nbsp; <br>00411409&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dword ptr [ebp-4],ecx&nbsp; </p>
<p>&nbsp;}<br>0041140C&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edi&nbsp; <br>0041140D&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esi&nbsp; <br>0041140E&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebx&nbsp; <br>0041140F&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esp,ebp&nbsp; <br>00411411&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp&nbsp; <br>00411412&nbsp; ret&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp; <br><br><br>int _tmain(int argc, _TCHAR* argv[])<br>{<br>00411370&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp&nbsp; <br>00411371&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp,esp&nbsp; <br>00411373&nbsp; sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esp,44h&nbsp; <br>00411376&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebx&nbsp; <br>00411377&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esi&nbsp; <br>00411378&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edi&nbsp; <br>&nbsp;Test t;<br>&nbsp;t.Fun1(1);<br>00411379&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; <br>0041137B&nbsp; lea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eax,[t]&nbsp; <br>0041137E&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eax&nbsp; <br>0041137F&nbsp; call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Test::Fun1 (411131h)&nbsp; <br>&nbsp;t.Fun2(2);<br>00411384&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp; <br>00411386&nbsp; lea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eax,[t]&nbsp; <br>00411389&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eax&nbsp; <br>0041138A&nbsp; call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Test::Fun2 (4110D2h)&nbsp; <br>0041138F&nbsp; add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esp,8&nbsp; <br>&nbsp;t.Fun3(3);<br>00411392&nbsp; push&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp; <br>00411394&nbsp; lea&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ecx,[t]&nbsp; <br>00411397&nbsp; call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Test::Fun3 (41107Dh)&nbsp; </p>
<p>&nbsp;return 0;<br>0041139C&nbsp; xor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eax,eax&nbsp; <br>}<br>0041139E&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; edi&nbsp; <br>0041139F&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esi&nbsp; <br>004113A0&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebx&nbsp; <br>004113A1&nbsp; mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; esp,ebp&nbsp; <br>004113A3&nbsp; pop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ebp&nbsp; <br>004113A4&nbsp; ret&nbsp; </p>
<br><br><br>
<img src ="http://www.cppblog.com/byc/aggbug/133514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/byc/" target="_blank">八叶草</a> 2010-11-13 12:16 <a href="http://www.cppblog.com/byc/archive/2010/11/13/133514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>__FUNCSIG__ __FUNCDNAME__ __FUNCTION__ __func__ </title><link>http://www.cppblog.com/byc/archive/2010/11/09/133080.html</link><dc:creator>八叶草</dc:creator><author>八叶草</author><pubDate>Tue, 09 Nov 2010 03:11:00 GMT</pubDate><guid>http://www.cppblog.com/byc/archive/2010/11/09/133080.html</guid><wfw:comment>http://www.cppblog.com/byc/comments/133080.html</wfw:comment><comments>http://www.cppblog.com/byc/archive/2010/11/09/133080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/byc/comments/commentRss/133080.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/byc/services/trackbacks/133080.html</trackback:ping><description><![CDATA[<p>__FUNCSIG__ __FUNCDNAME__ __FUNCTION__ __func__ <br><br>在最新的ISO C标准中，如大家所知的C99，加入了另一个有用的、类似宏的表达式__func__，其会报告未修饰过的（也就是未裁剪过的）、正在被访问的函数名。请注意，__func__不是一个宏，因为预处理器对此函数一无所知；相反，它是作为一个隐式声明的常量字符数组实现的：<br>static const char __func__[] = "function-name"; <br>官方C99标准为此目的定义的__func__标识符，确实值得大家关注，然而，ISO C++却不完全支持所有的C99扩展，因此，大多数的编译器提供商都使用 __FUNCTION__ 取而代之，而 __FUNCTION__ 通常是一个定义为 __func__ 的宏，之所以使用这个名字，是因为它已受到了大多数的广泛支持。<br>在Visual Studio 2005中，默认情况下，此特性是激活的，但不能与/EP和/P编译选项同时使用。请注意在IDE环境中，不能识别__func__ ，而要用__FUNCTION__ 代替。<br>Comeau的用户也应使用 __FUNCTION__ ，而不是 __func__ 。<br>C++ BuilderX的用户则应使用稍稍不同的名字：__FUNC__ 。<br>GCC 3.0及更高的版本同时支持 __func__ 和__FUNCTION__ 。</p>
<p>__FUNCTION__ 特性最初是为C语言设计的，然而，C++程序员也会经常需要有关他们函数的额外信息，在Visual Studio 2005中，还支持另外两种非标准的扩展特性：__FUNCDNAME__ 与 __FUNCSIG__ ，其分别转译为一个函数的修饰名与签名。<br><br>例子<br>int test(int x) <br>vs2010<br>__FUNCTION__:test<br>__FUNCDNAME__:?test@@YAHH@Z<br>__FUNCSIG__:int __cdecl test(int)<br>gcc<br>__FUNCTION__:test<br>__func__:test</p>
<img src ="http://www.cppblog.com/byc/aggbug/133080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/byc/" target="_blank">八叶草</a> 2010-11-09 11:11 <a href="http://www.cppblog.com/byc/archive/2010/11/09/133080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>