﻿<?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/changup/</link><description /><language>zh-cn</language><lastBuildDate>Wed, 08 Apr 2026 07:52:47 GMT</lastBuildDate><pubDate>Wed, 08 Apr 2026 07:52:47 GMT</pubDate><ttl>60</ttl><item><title>c中调用perl的测试小程序，各种场景继续测试中</title><link>http://www.cppblog.com/changup/archive/2010/12/30/137753.html</link><dc:creator>changup</dc:creator><author>changup</author><pubDate>Thu, 30 Dec 2010 10:14:00 GMT</pubDate><guid>http://www.cppblog.com/changup/archive/2010/12/30/137753.html</guid><wfw:comment>http://www.cppblog.com/changup/comments/137753.html</wfw:comment><comments>http://www.cppblog.com/changup/archive/2010/12/30/137753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changup/comments/commentRss/137753.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changup/services/trackbacks/137753.html</trackback:ping><description><![CDATA[<p>tar包位置：<a href="http://www.cppblog.com/Files/changup/c_perl.tar">http://www.cppblog.com/Files/changup/c_perl.tar</a><br><br>本次测试比较完整的一个c文件，贴出来，请高人指点完善，争取大家实际中能用好，毕竟感觉在程序中嵌入解释性的脚本是非常好的，尤其针对复杂多变的业务逻辑部分；<br></p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">EXTERN.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">perl.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;PerlInterpreter</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;my_perl;<br><br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;CALLFUN_BEGIN&nbsp;&nbsp;dSP;&nbsp;\</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ENTER;&nbsp;\<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SAVETMPS;&nbsp;\<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUSHMARK(SP);<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;CALLFUN_END&nbsp;&nbsp;FREETMPS;\</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LEAVE;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;initperlenv(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;my_perl&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;perl_alloc();<br>&nbsp;&nbsp;&nbsp;&nbsp;perl_construct(my_perl);&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;perl_parse(my_perl,&nbsp;NULL,&nbsp;argc,&nbsp;argv,&nbsp;(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">)NULL);<br>}<br><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;destroyperlenv()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perl_destruct(my_perl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;perl_free(my_perl);&nbsp;&nbsp;&nbsp;&nbsp;<br>}<br><br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;普通perl标量的操作<br></span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;SV_test()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">创建</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;SV</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;sv_i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;newSViv(</span><span style="COLOR: #000000">99</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;SV</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;sv_n&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;newSVnv(</span><span style="COLOR: #000000">23.45</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;SV</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;sv_p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;newSVpv(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test&nbsp;string</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;SV</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;funstring&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">将变量设置为mortal；</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sv_2mortal(sv_i);<br>&nbsp;&nbsp;&nbsp;&nbsp;sv_2mortal(sv_n);<br>&nbsp;&nbsp;&nbsp;&nbsp;sv_2mortal(sv_p);&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">探测类型</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(SvIOK(sv_i))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sv_i&nbsp;is&nbsp;a&nbsp;int&nbsp;type,value=%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)(sv_i</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">sv_any));<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sv_i&nbsp;is&nbsp;not&nbsp;a&nbsp;int&nbsp;type\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(SvNOK(sv_n))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sv_n&nbsp;is&nbsp;a&nbsp;double&nbsp;type\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sv_n&nbsp;is&nbsp;not&nbsp;a&nbsp;double&nbsp;type\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(SvPOK(sv_p))<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sv_p&nbsp;is&nbsp;a&nbsp;string&nbsp;type\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sv_p&nbsp;is&nbsp;not&nbsp;a&nbsp;string&nbsp;type\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">探测类型，这次打印出的是类型的宏定义</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sv_i.type=%u\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;SvTYPE(sv_i));<br>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sv_n.type=%u\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;SvTYPE(sv_n));<br>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sv_p.type=%u\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;SvTYPE(sv_p));<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">以优美的格式打印标量</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sv_dump(sv_i);<br>&nbsp;&nbsp;&nbsp;&nbsp;sv_dump(sv_n);<br>&nbsp;&nbsp;&nbsp;&nbsp;sv_dump(sv_p);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">修改值</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sv_setiv(sv_i,</span><span style="COLOR: #000000">89</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;sv_dump(sv_i);<br>&nbsp;&nbsp;&nbsp;&nbsp;sv_setnv(sv_n,</span><span style="COLOR: #000000">89.76</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;sv_dump(sv_n);<br>&nbsp;&nbsp;&nbsp;&nbsp;sv_setpv(sv_p,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">String&nbsp;changed</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;sv_dump(sv_p);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">操作pl脚本中的文件</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;funstring&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;perl_get_sv(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">main::getstring</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">没有得到值</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sv_dump(funstring);<br>}<br><br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;操作perl函数<br>sub&nbsp;fun1()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;$username&nbsp;=&nbsp;shift;<br>&nbsp;&nbsp;&nbsp;&nbsp;$arg&nbsp;=&nbsp;shift;<br>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"your&nbsp;name=$username,your&nbsp;arg=$arg\n";<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;88;<br>}<br></span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;call_fun()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">调用函数前的perl堆栈操作</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CALLFUN_BEGIN;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">参数入栈</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;XPUSHs(sv_2mortal(newSVpv(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">changym</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)));<br>&nbsp;&nbsp;&nbsp;&nbsp;XPUSHs(sv_2mortal(newSViv(</span><span style="COLOR: #000000">32</span><span style="COLOR: #000000">)));<br>&nbsp;&nbsp;&nbsp;&nbsp;PUTBACK;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">表示参数完了<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">调用函数</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;perl_call_pv(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">fun1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,G_SCALAR);&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">G_SCALAR---返回标量;G_ARRAY--返回数组</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br>&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;G_SCALAR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br>&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;G_ARRAY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;#define&nbsp;G_VOID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;skip&nbsp;this&nbsp;bit&nbsp;when&nbsp;adding&nbsp;flags&nbsp;below&nbsp;</span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">extra&nbsp;flags&nbsp;for&nbsp;Perl_call_*&nbsp;routines<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">#define&nbsp;G_DISCARD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Call&nbsp;FREETMPS.&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">#define&nbsp;G_EVAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Assume&nbsp;eval&nbsp;{}&nbsp;around&nbsp;subroutine&nbsp;call.&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">#define&nbsp;G_NOARGS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Don't&nbsp;construct&nbsp;a&nbsp;@_&nbsp;array.&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">#define&nbsp;G_KEEPERR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Append&nbsp;errors&nbsp;to&nbsp;$@,&nbsp;don't&nbsp;overwrite&nbsp;it&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">#define&nbsp;G_NODEBUG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Disable&nbsp;debugging&nbsp;at&nbsp;toplevel.&nbsp;&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">#define&nbsp;G_METHOD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;64&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Calling&nbsp;method.&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">开始操作返回值了</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;SPAGAIN;<br>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">inner&nbsp;ibm.pl,fun1&nbsp;return&nbsp;%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,POPp);&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">POPi---int,&nbsp;POPp--pchar</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PUTBACK;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">表示返回值取完了<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">perl栈资源回收</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CALLFUN_END;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br><br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;操作perl函数,perl&nbsp;函数返回一个数组<br>sub&nbsp;return_array()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;@arr&nbsp;=&nbsp;("changym","chenjx","changjr","xiaobaobao");<br>&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;"inner&nbsp;ibm.pl.return_array:@arr\n";<br>}<br></span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;call_fun_ret_array()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ireturn&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;STRLEN&nbsp;n_a;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">诡异的现象，非要定义这个否则打印值的哪行就报错<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">ibm.c:162:&nbsp;`n_a'&nbsp;undeclared&nbsp;(first&nbsp;use&nbsp;in&nbsp;this&nbsp;function)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">同样的问题就是PerlInterpreter的名字必须叫my_perl,为什么啊？<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">调用函数前的perl堆栈操作</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CALLFUN_BEGIN;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;PUTBACK;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">表示参数完了<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">调用函数</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;ireturn&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;perl_call_pv(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">return_array</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,G_ARRAY);&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">G_SCALAR---返回标量;G_ARRAY--返回数组<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">开始操作返回值了</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;SPAGAIN;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(ireturn</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(ireturn</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">返回的顺序是数组的倒叙啊？</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">coming&nbsp;from&nbsp;ibm.pl.return_array:%d-%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ireturn</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">,POPpx);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;PUTBACK;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">表示返回值取完了&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">perl栈资源回收</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CALLFUN_END;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br><br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;my_argv[]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;{</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ibm.pl</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">};<br>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">begin&nbsp;c_perl_ibm_test\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">init&nbsp;perl&nbsp;env\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;initperlenv(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,my_argv);<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">标量操作测试<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">SV_test();<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">函数操作测试<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">call_fun();<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">操作perl函数返回数组测试</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;call_fun_ret_array();&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;destroyperlenv();&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">leaved&nbsp;c_perl_ibm_test\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br></span></div>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/changup/aggbug/137753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changup/" target="_blank">changup</a> 2010-12-30 18:14 <a href="http://www.cppblog.com/changup/archive/2010/12/30/137753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C、C++程序潜入解释性语言</title><link>http://www.cppblog.com/changup/archive/2010/12/24/137357.html</link><dc:creator>changup</dc:creator><author>changup</author><pubDate>Fri, 24 Dec 2010 02:22:00 GMT</pubDate><guid>http://www.cppblog.com/changup/archive/2010/12/24/137357.html</guid><wfw:comment>http://www.cppblog.com/changup/comments/137357.html</wfw:comment><comments>http://www.cppblog.com/changup/archive/2010/12/24/137357.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/changup/comments/commentRss/137357.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changup/services/trackbacks/137357.html</trackback:ping><description><![CDATA[<p>在做电信宽带认证Radius系统的时候，采用了开源的freeradius系统，其中有个perl的模块非常的方便，多变的业务逻辑交给解释性的perl去执行，这样在后期的维护、上线就边的非常简单，不用修改C程序。近期打算摘一下C和Perl的交互，分离出一个包公用。<br>请教大家这样的案例还有没有更简单的组合？期待CPP博客的高手们开坛讲经...<br>补充一下：开源的现成框架更好！</p>
<img src ="http://www.cppblog.com/changup/aggbug/137357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changup/" target="_blank">changup</a> 2010-12-24 10:22 <a href="http://www.cppblog.com/changup/archive/2010/12/24/137357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生成随机数的一段代码</title><link>http://www.cppblog.com/changup/archive/2010/12/23/137259.html</link><dc:creator>changup</dc:creator><author>changup</author><pubDate>Thu, 23 Dec 2010 01:15:00 GMT</pubDate><guid>http://www.cppblog.com/changup/archive/2010/12/23/137259.html</guid><wfw:comment>http://www.cppblog.com/changup/comments/137259.html</wfw:comment><comments>http://www.cppblog.com/changup/archive/2010/12/23/137259.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cppblog.com/changup/comments/commentRss/137259.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changup/services/trackbacks/137259.html</trackback:ping><description><![CDATA[生成随机数的一段代码。引来一片嘘嘘，删掉了一句，呵呵，顶不住了。可是我觉得够用就行了为原则。<br>改进一下，提高种子的精度，完了引入os的radom设备<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">#include &lt;stdlib.h&gt;<br>#include &lt;stdio.h&gt;<br>#include &lt;string.h&gt;<br>#include &lt;sys/time.h&gt;<br></span><span style="COLOR: #000000"><br>void init_random()<br>{<br>&nbsp;unsigned int ticks;<br>&nbsp;struct timeval tv;<br>&nbsp;gettimeofday(&amp;tv,NULL);<br>&nbsp;ticks = tv.tv_sec + tv.tv_usec;<br>&nbsp;srand(ticks);<br>}<br><br></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">ibuflen---需要生成的随即串的长度</span><span style="COLOR: #008000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;genrandstr(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pszbuf,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ibuflen)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;sourchar[]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;init_random();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">ibuflen;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;rand()</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(RAND_MAX</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(sourchar)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pszbuf[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sourchar[x];<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;pszbuf[ibuflen]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br>}<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv[])<br>{<br>&nbsp;printf("begin randstr...,RAND_MAX=%d\n",RAND_MAX);<br>&nbsp;char buf[9] = {0};<br>&nbsp;genrandstr(buf,8);<br>&nbsp;printf("randstr=%s\n",buf);&nbsp;<br>&nbsp;genrandstr(buf,8);<br>&nbsp;printf("randstr=%s\n",buf);<br>&nbsp;genrandstr(buf,8);<br>&nbsp;printf("randstr=%s\n",buf);<br>&nbsp;genrandstr(buf,8);<br>&nbsp;printf("randstr=%s\n",buf);<br>&nbsp;genrandstr(buf,8);<br>&nbsp;printf("randstr=%s\n",buf);<br>&nbsp;genrandstr(buf,8);<br>&nbsp;printf("randstr=%s\n",buf);<br>&nbsp;printf("end randstr...\n");<br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>}<br></span></div>
<img src ="http://www.cppblog.com/changup/aggbug/137259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changup/" target="_blank">changup</a> 2010-12-23 09:15 <a href="http://www.cppblog.com/changup/archive/2010/12/23/137259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>继续上一块砖，引来玉。一个命令行参数的解析类CArgNodeList</title><link>http://www.cppblog.com/changup/archive/2010/12/15/136498.html</link><dc:creator>changup</dc:creator><author>changup</author><pubDate>Wed, 15 Dec 2010 07:10:00 GMT</pubDate><guid>http://www.cppblog.com/changup/archive/2010/12/15/136498.html</guid><wfw:comment>http://www.cppblog.com/changup/comments/136498.html</wfw:comment><comments>http://www.cppblog.com/changup/archive/2010/12/15/136498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/changup/comments/commentRss/136498.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changup/services/trackbacks/136498.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/changup/archive/2010/12/15/136498.html'>阅读全文</a><img src ="http://www.cppblog.com/changup/aggbug/136498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changup/" target="_blank">changup</a> 2010-12-15 15:10 <a href="http://www.cppblog.com/changup/archive/2010/12/15/136498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>单实例模式的一个C++读取配置文件的类CConfig2Map</title><link>http://www.cppblog.com/changup/archive/2010/12/14/136381.html</link><dc:creator>changup</dc:creator><author>changup</author><pubDate>Tue, 14 Dec 2010 07:48:00 GMT</pubDate><guid>http://www.cppblog.com/changup/archive/2010/12/14/136381.html</guid><wfw:comment>http://www.cppblog.com/changup/comments/136381.html</wfw:comment><comments>http://www.cppblog.com/changup/archive/2010/12/14/136381.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/changup/comments/commentRss/136381.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changup/services/trackbacks/136381.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 由于项目中经常遇到读取配置文件的地方，为方便调用虽写了个功能简单，使用方便的配置文件类，基本思路是将配置文件缓冲到map当中，目前只支持一级配置，多级别的树形配置暂不支持，有需要的兄弟请完善。为单实例模式。config2map.h//&nbsp;config2map.h//&nbsp;配置文件到map的映射类，单实例模式//&nbsp;创建:&nbsp;2010-09-13&nbsp;chan...&nbsp;&nbsp;<a href='http://www.cppblog.com/changup/archive/2010/12/14/136381.html'>阅读全文</a><img src ="http://www.cppblog.com/changup/aggbug/136381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changup/" target="_blank">changup</a> 2010-12-14 15:48 <a href="http://www.cppblog.com/changup/archive/2010/12/14/136381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个udp server的仿组件的封装，抛砖引玉</title><link>http://www.cppblog.com/changup/archive/2010/12/14/136367.html</link><dc:creator>changup</dc:creator><author>changup</author><pubDate>Tue, 14 Dec 2010 03:34:00 GMT</pubDate><guid>http://www.cppblog.com/changup/archive/2010/12/14/136367.html</guid><wfw:comment>http://www.cppblog.com/changup/comments/136367.html</wfw:comment><comments>http://www.cppblog.com/changup/archive/2010/12/14/136367.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/changup/comments/commentRss/136367.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/changup/services/trackbacks/136367.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/changup/archive/2010/12/14/136367.html'>阅读全文</a><img src ="http://www.cppblog.com/changup/aggbug/136367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/changup/" target="_blank">changup</a> 2010-12-14 11:34 <a href="http://www.cppblog.com/changup/archive/2010/12/14/136367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>