﻿<?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++博客-Kenpusney -最新评论</title><link>http://www.cppblog.com/kenpusney/CommentsRSS.aspx</link><description>Just For Fun</description><language>zh-cn</language><pubDate>Sun, 14 Jun 2009 13:28:00 GMT</pubDate><lastBuildDate>Sun, 14 Jun 2009 13:28:00 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: 精简的华丽--读 Linux0.01 syscall系列函数有感!</title><link>http://www.cppblog.com/kenpusney/archive/2009/06/18/87572.html#87984</link><dc:creator>KPSN</dc:creator><author>KPSN</author><pubDate>Thu, 18 Jun 2009 07:50:00 GMT</pubDate><guid>http://www.cppblog.com/kenpusney/archive/2009/06/18/87572.html#87984</guid><description><![CDATA[@唐风<br>...貌似不错..<br><img src ="http://www.cppblog.com/kenpusney/aggbug/87984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kenpusney/" target="_blank">KPSN</a> 2009-06-18 15:50 <a href="http://www.cppblog.com/kenpusney/archive/2009/06/18/87572.html#87984#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 精简的华丽--读 Linux0.01 syscall系列函数有感!</title><link>http://www.cppblog.com/kenpusney/archive/2009/06/14/87572.html#87660</link><dc:creator>唐风</dc:creator><author>唐风</author><pubDate>Sun, 14 Jun 2009 13:28:00 GMT</pubDate><guid>http://www.cppblog.com/kenpusney/archive/2009/06/14/87572.html#87660</guid><description><![CDATA[<span style="FONT-SIZE: 10pt">确实是很精巧！！ <br>嗯，看来多读读高手写的代码还是很有裨益的。 <br><br>不过坦白地讲，我个人更欣赏用C++模板来实现这类似的效果（只在必要的时候辅之以宏，比如要实现(__NR_##name)或是换函数名之类的效果）。 <br><br>在Boost::lambda中也有类似的技巧，不过是宏加模板来完成。 <br>一般来讲，泛化类型时用模板，而要修改字符以生成不同的函数时，再加点宏的技巧。 <br>上面的你举的例子小改下： <br></span>
<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"><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;_syscall1(ResType,&nbsp;functionName,&nbsp;a)&nbsp;\&nbsp;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align=top>template&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">typename&nbsp;Arg</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align=top>ResType&nbsp;functionName(Arg&nbsp;a)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;<br><img id=Codehighlighter1_144_576_Open_Image onclick="this.style.display='none'; Codehighlighter1_144_576_Open_Text.style.display='none'; Codehighlighter1_144_576_Closed_Image.style.display='inline'; Codehighlighter1_144_576_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_144_576_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_144_576_Closed_Text.style.display='none'; Codehighlighter1_144_576_Open_Image.style.display='inline'; Codehighlighter1_144_576_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_144_576_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/images/dot.gif"></span><span id=Codehighlighter1_144_576_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ResType&nbsp;__res;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;__asm__&nbsp;</span><span style="COLOR: #0000ff">volatile</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">int&nbsp;$0x80</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">=a</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;(__res)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;(__NR_##functionName),</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">b</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">(a));\&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(__res&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;__res;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;errno&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">__res;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align=top></span></div>
<br><span style="FONT-SIZE: 10pt">当然，Linux内核是不用C++的，所以宏是唯一的选择了~~~</span> <br>
<img src ="http://www.cppblog.com/kenpusney/aggbug/87660.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/kenpusney/" target="_blank">唐风</a> 2009-06-14 21:28 <a href="http://www.cppblog.com/kenpusney/archive/2009/06/14/87572.html#87660#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>