<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>真好吃 &#187; C/C++</title>
	<atom:link href="http://tgic.me/tag/cc/feed/" rel="self" type="application/rss+xml" />
	<link>http://tgic.me</link>
	<description>blog真的很好吃</description>
	<lastBuildDate>Sun, 01 Jan 2012 17:31:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>apue.h ……</title>
		<link>http://tgic.me/2009/12/26/apue-h-%e2%80%a6%e2%80%a6/</link>
		<comments>http://tgic.me/2009/12/26/apue-h-%e2%80%a6%e2%80%a6/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 16:57:22 +0000</pubDate>
		<dc:creator>T.G.</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[C/C++]]></category>

		<guid isPermaLink="false">http://farmer1992.phpsix.net/?p=712</guid>
		<description><![CDATA[书上代码都有这个 这个文件在书的附录里边 我无法理解作者为什么这么作 他自己的解释是 环保 节约纸张 还好 这个有下载 http://www.apuebook.com/ apue.h 在 include目录 http://www.apuebook.com/src.tar.gz 这里还包含了书中的代码]]></description>
			<content:encoded><![CDATA[<p>书上代码都有这个<br />
这个文件在书的附录里边 </p>
<p>我无法理解作者为什么这么作<br />
他自己的解释是 环保 节约纸张</p>
<p>还好 这个有下载</p>
<p>http://www.apuebook.com/</p>
<p>apue.h 在 include目录</p>
<p>http://www.apuebook.com/src.tar.gz</p>
<p>这里还包含了书中的代码</p>
]]></content:encoded>
			<wfw:commentRss>http://tgic.me/2009/12/26/apue-h-%e2%80%a6%e2%80%a6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>入门级别linux socket 通信</title>
		<link>http://tgic.me/2009/12/20/%e5%85%a5%e9%97%a8%e7%ba%a7%e5%88%ablinux-socket-%e9%80%9a%e4%bf%a1/</link>
		<comments>http://tgic.me/2009/12/20/%e5%85%a5%e9%97%a8%e7%ba%a7%e5%88%ablinux-socket-%e9%80%9a%e4%bf%a1/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 14:25:43 +0000</pubDate>
		<dc:creator>T.G.</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://farmer1992.phpsix.net/?p=692</guid>
		<description><![CDATA[linux 进程间通讯 第一步 主要是参考 http://beej.us/guide/bgipc/ 写出来的 国人写的基本全是转载 不是代码残疾 就是根本看不懂的……广告 整理下 g++编译 Server.cpp 1234567891011121314151617181920212223242526272829303132333435363738394041424344#include &#60;iostream&#62; using namespace std; #include &#60;sys/socket.h&#62; #include &#60;sys/un.h&#62; const int MAX_RECV = 500; int main&#40;int argc, char ** argv&#41;&#123; &#160; &#160; sockaddr_un server; // sockaddr_un 表示使用socket文件 参考 sockaddr_in &#160; &#160; server.sun_family = AF_UNIX; &#160; &#160; strcpy&#40;server.sun_path, &#34;test.socket&#34;&#41;; &#160; &#160; unlink&#40;server.sun_path&#41;; // 绑定之前 [...]]]></description>
			<content:encoded><![CDATA[<p>linux 进程间通讯 第一步</p>
<p>主要是参考 http://beej.us/guide/bgipc/ 写出来的<br />
国人写的基本全是转载 不是代码残疾 就是根本看不懂的……广告</p>
<p>整理下 g++编译</p>
<p>Server.cpp</p>
<div class="codecolorer-container cpp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br /></div></td><td><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339900;">#include &lt;iostream&gt;</span><br />
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span><br />
<br />
<span style="color: #339900;">#include &lt;sys/socket.h&gt;</span><br />
<span style="color: #339900;">#include &lt;sys/un.h&gt;</span><br />
<br />
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX_RECV <span style="color: #000080;">=</span> <span style="color: #0000dd;">500</span><span style="color: #008080;">;</span><br />
<br />
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">**</span> argv<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
<br />
&nbsp; &nbsp; sockaddr_un server<span style="color: #008080;">;</span> <span style="color: #666666;">// sockaddr_un 表示使用socket文件 参考 sockaddr_in</span><br />
<br />
&nbsp; &nbsp; server.<span style="color: #007788;">sun_family</span> <span style="color: #000080;">=</span> AF_UNIX<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>server.<span style="color: #007788;">sun_path</span>, <span style="color: #FF0000;">&quot;test.socket&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; unlink<span style="color: #008000;">&#40;</span>server.<span style="color: #007788;">sun_path</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">// 绑定之前 清理掉&nbsp; </span><br />
<br />
&nbsp; &nbsp; <span style="color: #0000ff;">int</span> s <span style="color: #000080;">=</span> socket<span style="color: #008000;">&#40;</span>AF_UNIX, SOCK_STREAM, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; bind<span style="color: #008000;">&#40;</span>s , <span style="color: #008000;">&#40;</span>sockaddr <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;</span>server, <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>server<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; listen<span style="color: #008000;">&#40;</span>s, <span style="color: #0000dd;">5</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #008080;">;;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;Wating&quot;</span><span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; sockaddr_un client<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; socklen_t client_len <span style="color: #000080;">=</span> <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>client<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">int</span> c <span style="color: #000080;">=</span> accept<span style="color: #008000;">&#40;</span>s, <span style="color: #008000;">&#40;</span>sockaddr <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;</span>client, <span style="color: #000040;">&amp;</span>client_len<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000dd;">cout</span><span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;Connected &quot;</span> <span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">char</span> buf<span style="color: #008000;">&#91;</span>MAX_RECV<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">int</span> len<span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span> <span style="color: #008000;">&#40;</span>len <span style="color: #000080;">=</span> recv<span style="color: #008000;">&#40;</span>c, <span style="color: #000040;">&amp;</span>buf, MAX_RECV, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666;">// 处理buf</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span><span style="color: #FF0000;">&quot;Client Says:&quot;</span> <span style="color: #000080;">&lt;&lt;</span> buf <span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; send<span style="color: #008000;">&#40;</span>c, buf, len, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">//写入client</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span></div></td></tr></tbody></table></div>
<p>client.cpp</p>
<div class="codecolorer-container cpp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br /></div></td><td><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339900;">#include &lt;iostream&gt;</span><br />
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span><br />
<br />
<span style="color: #339900;">#include &lt;sys/socket.h&gt;</span><br />
<span style="color: #339900;">#include &lt;sys/un.h&gt;</span><br />
<br />
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX_RECV <span style="color: #000080;">=</span> <span style="color: #0000dd;">500</span><span style="color: #008080;">;</span><br />
<br />
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span> <span style="color: #000040;">**</span> argv<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; sockaddr_un server<span style="color: #008080;">;</span> <span style="color: #666666;">// sockaddr_un 表示使用socket文件 参考 sockaddr_in</span><br />
<br />
&nbsp; &nbsp; server.<span style="color: #007788;">sun_family</span> <span style="color: #000080;">=</span> AF_UNIX<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span>server.<span style="color: #007788;">sun_path</span>, <span style="color: #FF0000;">&quot;test.socket&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #0000ff;">int</span> s <span style="color: #000080;">=</span> socket<span style="color: #008000;">&#40;</span>AF_UNIX, SOCK_STREAM, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; connect<span style="color: #008000;">&#40;</span>s, <span style="color: #008000;">&#40;</span>sockaddr <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;</span>server, <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>server<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #0000ff;">char</span> str<span style="color: #008000;">&#91;</span>MAX_RECV<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">char</span> buf<span style="color: #008000;">&#91;</span>MAX_RECV<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">cin</span><span style="color: #000080;">&gt;&gt;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; send<span style="color: #008000;">&#40;</span>s, str, <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>str<span style="color: #008000;">&#41;</span>, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">if</span><span style="color: #008000;">&#40;</span> recv<span style="color: #008000;">&#40;</span>s, <span style="color: #000040;">&amp;</span>buf, MAX_RECV, <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span> <span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666;">// 处理buf</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Server Say:&quot;</span> <span style="color: #000080;">&lt;&lt;</span> buf <span style="color: #000080;">&lt;&lt;</span>endl<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span></div></td></tr></tbody></table></div>
<p>Makefile</p>
<div class="codecolorer-container make default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="make codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">all<span style="color: #004400;">:</span> server client <br />
&nbsp; &nbsp; <br />
server<span style="color: #004400;">:</span> server<span style="color: #004400;">.</span>cpp<br />
&nbsp; &nbsp; g<span style="color: #004400;">++</span> <span style="color: #004400;">-</span>o server server<span style="color: #004400;">.</span>cpp<br />
<br />
client<span style="color: #004400;">:</span> client<span style="color: #004400;">.</span>cpp<br />
&nbsp; &nbsp; g<span style="color: #004400;">++</span> <span style="color: #004400;">-</span>o client client<span style="color: #004400;">.</span>cpp</div></td></tr></tbody></table></div>
]]></content:encoded>
			<wfw:commentRss>http://tgic.me/2009/12/20/%e5%85%a5%e9%97%a8%e7%ba%a7%e5%88%ablinux-socket-%e9%80%9a%e4%bf%a1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>编写python c++ 扩展 (ubuntu下)</title>
		<link>http://tgic.me/2009/12/19/%e7%bc%96%e5%86%99python-c-%e6%89%a9%e5%b1%95-ubuntu%e4%b8%8b/</link>
		<comments>http://tgic.me/2009/12/19/%e7%bc%96%e5%86%99python-c-%e6%89%a9%e5%b1%95-ubuntu%e4%b8%8b/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 15:49:24 +0000</pubDate>
		<dc:creator>T.G.</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://farmer1992.phpsix.net/?p=670</guid>
		<description><![CDATA[python 的c++扩展编写 比 php简单很多 phpize 也不是很好用的一个东西 编写一个 python mod hello world 123456789101112131415161718192021222324#include &#34;Python.h&#34; PyObject* hello&#40;PyObject* self, PyObject* args&#41;&#123; &#160; &#160; const char * str; &#160; &#160; &#160; &#160; if &#40;! PyArg_ParseTuple&#40;args, &#34;s&#34;, &#38;str&#41;&#41; &#160; &#160; &#160; &#160; return NULL; &#160; &#160; &#160; &#160; return Py_BuildValue&#40;&#34;s&#34;,str&#41;; &#125; static PyMethodDef helloMethods&#91;&#93; = &#123; &#160; &#160; &#123;&#34;hello&#34;, hello, [...]]]></description>
			<content:encoded><![CDATA[<p>python 的c++扩展编写 比 php简单很多</p>
<p>phpize 也不是很好用的一个东西</p>
<p>编写一个 python mod hello world</p>
<div class="codecolorer-container cpp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br /></div></td><td><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339900;">#include &quot;Python.h&quot;</span><br />
<br />
PyObject<span style="color: #000040;">*</span> hello<span style="color: #008000;">&#40;</span>PyObject<span style="color: #000040;">*</span> self, PyObject<span style="color: #000040;">*</span> args<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span> str<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span> PyArg_ParseTuple<span style="color: #008000;">&#40;</span>args, <span style="color: #FF0000;">&quot;s&quot;</span>, <span style="color: #000040;">&amp;</span>str<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span><br />
<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0000ff;">return</span> Py_BuildValue<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;s&quot;</span>,str<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<br />
<br />
<span style="color: #0000ff;">static</span> PyMethodDef helloMethods<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><span style="color: #FF0000;">&quot;hello&quot;</span>, hello, METH_VARARGS, <span style="color: #FF0000;">&quot;hello comments&quot;</span><span style="color: #008000;">&#125;</span>,<br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><span style="color: #0000ff;">NULL</span>, <span style="color: #0000ff;">NULL</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span><br />
<br />
PyMODINIT_FUNC inithello<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">void</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; Py_InitModule<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;hello&quot;</span>, helloMethods<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span></div></td></tr></tbody></table></div>
<p>一个Python mod 因该有几个部分<br />
1 扩展函数 hello<br />
PyObject* hello(PyObject* self, PyObject* args){<br />
只能是这样的结构<br />
PyArg_ParseTuple 处理参数</p>
<p>2 函数列表 helloMethods<br />
static PyMethodDef helloMethods</p>
<p>3 初始化函数 inithello<br />
init函数名</p>
<p>编译<br />
在 ubuntu 下需要安装python-dev<br />
sudo apt-get install python-dev</p>
<p>yum服务器上应该是<br />
python-devel</p>
<div class="codecolorer-container make default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="make codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">all<span style="color: #004400;">:</span> hello<span style="color: #004400;">.</span>so <br />
<br />
hello<span style="color: #004400;">.</span>so<span style="color: #004400;">:</span> hello<span style="color: #004400;">.</span>o<br />
&nbsp; &nbsp; g<span style="color: #004400;">++</span> <span style="color: #004400;">-</span>shared hello<span style="color: #004400;">.</span>o <span style="color: #004400;">-</span>o hello<span style="color: #004400;">.</span>so <br />
<br />
hello<span style="color: #004400;">.</span>o<span style="color: #004400;">:</span> hello<span style="color: #004400;">.</span>cpp<br />
&nbsp; &nbsp; g<span style="color: #004400;">++</span> <span style="color: #004400;">-</span>fPIC <span style="color: #004400;">-</span>c <span style="color: #004400;">-</span>I <span style="color: #004400;">/</span>usr<span style="color: #004400;">/</span><span style="color: #666622; font-weight: bold;">include</span><span style="color: #004400;">/</span>python2<span style="color: #004400;">.</span>6<span style="color: #004400;">/</span> <span style="color: #004400;">-</span>o hello<span style="color: #004400;">.</span>o hello<span style="color: #004400;">.</span>cpp<br />
<br />
clean<span style="color: #004400;">:</span><br />
&nbsp; &nbsp; rm <span style="color: #004400;">-</span>f hello<span style="color: #004400;">.</span>o hello<span style="color: #004400;">.</span>so</div></td></tr></tbody></table></div>
<p>使用<br />
写一个 test.py</p>
<div class="codecolorer-container python default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="python codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #808080; font-style: italic;">#!/usr/bin/env python</span><br />
<br />
<span style="color: #ff7700;font-weight:bold;">import</span> hello<br />
<br />
<span style="color: #ff7700;font-weight:bold;">print</span> hello.<span style="color: black;">hello</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'world'</span><span style="color: black;">&#41;</span></div></td></tr></tbody></table></div>
<p>python 运行时候 会加载当前目录的.so</p>
]]></content:encoded>
			<wfw:commentRss>http://tgic.me/2009/12/19/%e7%bc%96%e5%86%99python-c-%e6%89%a9%e5%b1%95-ubuntu%e4%b8%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>最基础的Makefile</title>
		<link>http://tgic.me/2009/09/14/%e6%9c%80%e5%9f%ba%e7%a1%80%e7%9a%84makefile/</link>
		<comments>http://tgic.me/2009/09/14/%e6%9c%80%e5%9f%ba%e7%a1%80%e7%9a%84makefile/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 07:50:46 +0000</pubDate>
		<dc:creator>T.G.</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://farmer1992.phpsix.net/?p=617</guid>
		<description><![CDATA[hello.cpp #include &#60;iostream&#62; #include “lib.h” using namespace std; int main(int argc, char ** argv){ Helloworld * h = new Helloworld(); h-&#62;test(); cout&#60;&#60;”just done”&#60;&#60;endl; return 0; } lib.cpp #include &#60;iostream&#62; #include “lib.h” using namespace std; void Helloworld::test(){ cout&#60;&#60;”Helloworld”&#60;&#60;endl; } lib.h class Helloworld{ public: void test(); }; Makefile hello: hello.cpp lib.o g++ lib.o hello.cpp -o hello lib.o: [...]]]></description>
			<content:encoded><![CDATA[<p><strong>hello.cpp</strong><br />
#include &lt;iostream&gt;<br />
#include “lib.h”<br />
using namespace std;</p>
<p>int main(int argc, char ** argv){<br />
Helloworld * h = new Helloworld();<br />
h-&gt;test();</p>
<p>cout&lt;&lt;”just done”&lt;&lt;endl;<br />
return 0;<br />
}<br />
<strong>lib.cpp</strong></p>
<p>#include &lt;iostream&gt;<br />
#include “lib.h”<br />
using namespace std;</p>
<p>void Helloworld::test(){<br />
cout&lt;&lt;”Helloworld”&lt;&lt;endl;<br />
}<br />
<strong>lib.h</strong><br />
class Helloworld{<br />
public:<br />
void test();<br />
};</p>
<p><strong>Makefile</strong></p>
<p>hello: hello.cpp lib.o<br />
g++ lib.o hello.cpp -o hello</p>
<p>lib.o: lib.cpp lib.h<br />
g++ -c lib.cpp</p>
<p>这样就进入linux c/cc 的世界了</p>
]]></content:encoded>
			<wfw:commentRss>http://tgic.me/2009/09/14/%e6%9c%80%e5%9f%ba%e7%a1%80%e7%9a%84makefile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CString -&gt; double</title>
		<link>http://tgic.me/2008/10/31/cstring-double/</link>
		<comments>http://tgic.me/2008/10/31/cstring-double/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 04:17:00 +0000</pubDate>
		<dc:creator>T.G.</dc:creator>
				<category><![CDATA[未分类]]></category>
		<category><![CDATA[C/C++]]></category>

		<guid isPermaLink="false">http://farmer1992.wordpress.com/2008/10/31/cstring-double/</guid>
		<description><![CDATA[我不喜欢mfc不过别人请我作一个计算器就用了下 java和.net中 string -&#62; 数 是一件很快获得事情不过cstring 到不那么简单了 查阅 说atof 不过2008没法用……最后_wtof 才解决问题只能说 unicode 还是一个变态]]></description>
			<content:encoded><![CDATA[<p>我不喜欢mfc<br />不过别人请我作一个计算器<br />就用了下</p>
<p>java和.net中 string -&gt; 数 是一件很快获得事情<br />不过cstring 到不那么简单了</p>
<p>查阅 说atof 不过2008没法用……<br />最后_wtof  才解决问题<br />只能说 unicode 还是一个变态</p>
]]></content:encoded>
			<wfw:commentRss>http://tgic.me/2008/10/31/cstring-double/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

