??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精选大片,国产麻豆综合,亚洲综合大片69999http://www.shnenglu.com/cpunion/category/40.htmlAS/C/C++/D/Java/JS/Python/Rubyzh-cnWed, 21 May 2008 01:42:43 GMTWed, 21 May 2008 01:42:43 GMT60ABI Specifications 相关链接http://www.shnenglu.com/cpunion/archive/2006/03/23/4493.htmlqieziqieziThu, 23 Mar 2006 08:08:00 GMThttp://www.shnenglu.com/cpunion/archive/2006/03/23/4493.htmlhttp://www.shnenglu.com/cpunion/comments/4493.htmlhttp://www.shnenglu.com/cpunion/archive/2006/03/23/4493.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/4493.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/4493.htmlhttp://www.codesourcery.com/cxx-abi/abi.html

C++ ABI Summary
http://www.codesourcery.com/cxx-abi/

C++ ABI for IA-64: Code and Implementation Examples
http://www.codesourcery.com/cxx-abi/abi-examples.html

C++ Vtable Example
http://www.codesourcery.com/cxx-abi/cxx-vtable-ex.html



Intel] Itanium] Processor-specific Application Binary Interface (ABI)
http://developer.intel.com/design/itanium/downloads/245370.htm


qiezi 2006-03-23 16:08 发表评论
]]>
DMD 0.141发布http://www.shnenglu.com/cpunion/archive/2005/12/06/1558.htmlqieziqieziTue, 06 Dec 2005 02:41:00 GMThttp://www.shnenglu.com/cpunion/archive/2005/12/06/1558.htmlhttp://www.shnenglu.com/cpunion/comments/1558.htmlhttp://www.shnenglu.com/cpunion/archive/2005/12/06/1558.html#Feedback2http://www.shnenglu.com/cpunion/comments/commentRss/1558.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/1558.htmlWhat's New for D 0.141

Dec 1, 2005

New/Changed Features

  • The predefined version identifier D_InlineAsm has been changed to D_InlineAsm_X86. The former made no sense, and although it is still defined, it is deprecated.
  • Added D code coverage analyzer.
  • Added .mangleof property for types, which gives the 'mangled' type name as a string.

Bugs Fixed



其中“D代码覆盖分析器”应该是很多人感兴趣的东西了Q下面是一个例?摘自http://digitalmars.com/d/code_coverage.html)Q?/P>

/* Eratosthenes Sieve prime number calculation. */
 
bit flags[
8191];
 
int main()
{   
int     i, prime, k, count, iter;

    printf(
"10 iterations\n");
    
for (iter = 1; iter <= 10; iter++)
    {    count 
= 0;
    flags[] 
= true;
    
for (i = 0; i < flags.length; i++)
    {   
if (flags[i])
        {    prime 
= i + i + 3;
        k 
= i + prime;
        
while (k < flags.length)
        {
            flags[k] 
= false;
            k 
+= prime;
        }
        count 
+= 1;
        }
    }
    }
    printf (
"\n%d primes\n", count);
    
return 0;
}

~译、运行:
dmd sieve -cov
sieve
l果如下Q?BR>
       |/* Eratosthenes Sieve prime number calculation. */
       |
       |bit flags[8191];
       |
       |int main()
      5|{   int     i, prime, k, count, iter;
       |
      1|    printf("10 iterations\n");
     22|    for (iter = 1; iter <= 10; iter++)
     10|    {   count = 0;
     10|        flags[] = true;
163840|        for (i = 0; i < flags.length; i++)
  81910|        {   if (flags[i])
  18990|            {   prime = i + i + 3;
  18990|                k = i + prime;
168980|                while (k < flags.length)
       |                {
149990|                    flags[k] = false;
149990|                    k += prime;
       |                }
  18990|                count += 1;
       |            }
       |        }
       |    }
      1|    printf ("\n%d primes\n", count);
      1|    return 0;
       |}
sieve.d is 100% covered

另一个惊喜是mangleof属性,可以得到一个类型被~译器mangle后的名字。不知道mangle对应的中文翻译是什么?大概是“名字{换”吧。一Ҏ试代码:
import std.stdio;

void test();

void test1(int n);

void test2(int n);


void main()
{
    
void function (intchar[]) f;
    
void function (int) f1;
    
void function () f2;
    writefln (f.mangleof);
    writefln (f1.mangleof);
    writefln (f2.mangleof);
    writefln (
int.mangleof);
    
float a;
    writefln (a.mangleof);
    writefln ((
&test).mangleof);
    writefln ((
&test1).mangleof);
    writefln ((
&test2).mangleof);
    writefln (
void.mangleof);
}
~译执行l果如下Q?BR>
PFiAaZv
PFiZv
PFZv
i
f
PFZv
PFiZv
PFiZv
v


qiezi 2005-12-06 10:41 发表评论
]]>
DMD 0.140发布http://www.shnenglu.com/cpunion/archive/2005/11/25/1304.htmlqieziqieziFri, 25 Nov 2005 05:38:00 GMThttp://www.shnenglu.com/cpunion/archive/2005/11/25/1304.htmlhttp://www.shnenglu.com/cpunion/comments/1304.htmlhttp://www.shnenglu.com/cpunion/archive/2005/11/25/1304.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/1304.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/1304.htmlNov 23, 2005

New/Changed Features

  • Added std.string.soundex.
  • Added std.string.entab.
  • Added std.string.wrap.
  • Added std.string.abbrev.
  • Added std.windows.charset (thanks to Stewart Gordon, D/28246).
  • Added std.demangle to demangle D names.
  • Improved promotion of names inside templates.
  • Now allows floating point and string literals as template value arguments.
  • To support the previous, the name mangling of template instances has changed. This will necessitate recompilation of any code that uses templates.
  • std.utf.UtfError is now deprecated. Use std.utf.UtfException instead.

Bugs Fixed


比较感兴的是QҎ和字W串帔R作ؓ模板值参敎ͼ单测试了一下:

import std.stdio;

template TFloat (
float F)
{
    
float value = F;
}

template TString (
char[] S)
{
    
char[] value = S;
}

void main()
{
    alias TFloat
!(3.14f) PI;
    writefln(PI.value);
    writefln(TString
!("hello").value);
}

~译通过Q运行结果如下:

3.14
hello

qiezi 2005-11-25 13:38 发表评论
]]>
DMDScript脚本工具QDDL目http://www.shnenglu.com/cpunion/archive/2005/11/20/1200.htmlqieziqieziSat, 19 Nov 2005 16:20:00 GMThttp://www.shnenglu.com/cpunion/archive/2005/11/20/1200.htmlhttp://www.shnenglu.com/cpunion/comments/1200.htmlhttp://www.shnenglu.com/cpunion/archive/2005/11/20/1200.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/1200.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/1200.htmlhttp://www.digitalmars.com/dscript看到详细信息Q另外有一个C++的实现版本?BR>
另外2个符合ECMA 262规范的脚本语a分别是Netscape的javascript和Microsoft的JScriptQ目前DMDScript和其?个不完全兼容Q不q效率要高一些。DMDScript提供了一个简单的试Q生?190以内的质敎ͼq代10ơ,在我的机器上Qjavascript执行耗时566毫秒QDMDScript执行耗时188毫秒Q整整快?倍?BR>
如果你想实现一个符合ECMA 262标准的脚本语aQ徏议看q䆾代码的实现吧Q比较简z,只有400多K。微软那份估计是很难看到了,Netscape那䆾用C写的Q代码大就有近3MQ宏也比较多Q看h要吃力一些?BR>


DDL是dsource.org上的一个有的目Q它可以?obj?lib文g中加载代码ƈ执行Q目前支持COFF、OMF、ELF格式?img src ="http://www.shnenglu.com/cpunion/aggbug/1200.html" width = "1" height = "1" />

qiezi 2005-11-20 00:20 发表评论
]]>
D语言的模?/title><link>http://www.shnenglu.com/cpunion/archive/2005/11/11/1083.html</link><dc:creator>qiezi</dc:creator><author>qiezi</author><pubDate>Fri, 11 Nov 2005 09:13:00 GMT</pubDate><guid>http://www.shnenglu.com/cpunion/archive/2005/11/11/1083.html</guid><wfw:comment>http://www.shnenglu.com/cpunion/comments/1083.html</wfw:comment><comments>http://www.shnenglu.com/cpunion/archive/2005/11/11/1083.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/cpunion/comments/commentRss/1083.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cpunion/services/trackbacks/1083.html</trackback:ping><description><![CDATA[D语言的模板用非常方便灵z,受够了CQ+模板~写之苦的同学们可以感受一下D语言的模板,下面先展CZ个D语言~写的多分派委托c,在我的旧BLOG上曾l写q一个CQ+版本的,整个q程感觉非常痛苦。。?BR><BR>闲话说Q请看代码:<BR><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">import std.stdio;<BR><BR><BR>template DelegateHandlers(HandlerType, FunctionType)<BR>{<BR>    HandlerType[] handlers;<BR>    FunctionType[] functions;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> opAddAssign(HandlerType h)<BR>    {<BR>        handlers.length </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> handlers.length </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR>        handlers[length</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> h;<BR>    }<BR>    </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> opAddAssign(FunctionType f)<BR>    {<BR>        functions.length </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> functions.length </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR>        functions[length</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">] </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> f;<BR>    }<BR>}<BR><BR>template Delegate(Ret)<BR>{<BR>    </SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> Delegate<BR>    {<BR>        alias Ret </SPAN><SPAN style="COLOR: #0000ff">delegate</SPAN><SPAN style="COLOR: #000000"> () HandlerType;<BR>        alias Ret function () FunctionType;<BR>        mixin DelegateHandlers</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">(HandlerType, FunctionType);<BR><BR>        </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">is</SPAN><SPAN style="COLOR: #000000">(Ret: </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">))<BR>        {<BR>            </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> opCall ()<BR>            {<BR>                </SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000"> (HandlerType handler; handlers)<BR>                    handler ();<BR>                </SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000"> (FunctionType _function; functions)<BR>                    _function ();<BR>            }<BR>        }<BR>        </SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR>        {<BR>            Ret opCall ()<BR>            {<BR>                Ret ret;<BR>                </SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000"> (HandlerType handler; handlers)<BR>                    ret </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> handler ();<BR>                </SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000"> (FunctionType _function; functions)<BR>                    ret </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> _function ();<BR>                </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> ret;<BR>            }<BR>        }<BR><BR>    }<BR>}<BR><BR>template Delegate(Ret, Arg1)<BR>{<BR>    </SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> Delegate<BR>    {<BR>        alias Ret </SPAN><SPAN style="COLOR: #0000ff">delegate</SPAN><SPAN style="COLOR: #000000"> (Arg1) HandlerType;<BR>        alias Ret function (Arg1) FunctionType;<BR>        mixin DelegateHandlers</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">(HandlerType, FunctionType);<BR><BR>        </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">is</SPAN><SPAN style="COLOR: #000000">(Ret: </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">))<BR>        {<BR>            </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> opCall (Arg1 a1)<BR>            {<BR>                </SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000"> (HandlerType handler; handlers)<BR>                    handler (a1);<BR>                </SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000"> (FunctionType _function; functions)<BR>                    _function (a1);<BR>            }<BR>        }<BR>        </SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR>        {<BR>            Ret opCall (Arg1 a1)<BR>            {<BR>                Ret ret;<BR>                </SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000"> (HandlerType handler; handlers)<BR>                    ret </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> handler (a1);<BR>                </SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000"> (FunctionType _function; functions)<BR>                    ret </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> _function (a1);<BR>                </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> ret;<BR>            }<BR>        }<BR><BR>    }<BR>}<BR><BR><BR></SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> Test<BR>{<BR>    </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> test ()<BR>    {<BR>        writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Test.test</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>    }<BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> test1 ()<BR>    {<BR>        writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Test.test1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR>    </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> test2(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> v)<BR>    {<BR>        writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Test.test2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>    }<BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> test3(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> v)<BR>    {<BR>        writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Test.test3</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>        </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">7</SPAN><SPAN style="COLOR: #000000">;<BR>    }<BR>}<BR><BR></SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> test_func ()<BR>{<BR>    writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test_func</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> test_func1 ()<BR>{<BR>    writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test_func1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>    </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> test_func2(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> v)<BR>{<BR>    writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test_func2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> test_func3(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> v)<BR>{<BR>    writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test_func3</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>    </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">9</SPAN><SPAN style="COLOR: #000000">;<BR>}<BR><BR></SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> main()<BR>{<BR>    Test t </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> Test;<BR><BR>    alias Delegate</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">) DDD;<BR>    DDD d </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> DDD;<BR>    d </SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">t.test;<BR>    d </SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">test_func;<BR><BR>    d ();<BR><BR>    alias Delegate</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">) DDD1;<BR>    DDD1 d1 </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> DDD1;<BR>    d1 </SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">t.test1;<BR>    d1 </SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">test_func1;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> a </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> d1 ();<BR>    assert (a </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">);<BR><BR>    alias Delegate</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">, </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">) DDD2;<BR>    DDD2 d2 </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> DDD2;<BR>    d2 </SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">t.test2;<BR>    d2 </SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">test_func2;<BR><BR>    d2 (</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">);<BR><BR>    alias Delegate</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: #0000ff">int</SPAN><SPAN style="COLOR: #000000">) DDD3;<BR>    DDD3 d3 </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> DDD3;<BR>    d3 </SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">t.test3;<BR>    d3 </SPAN><SPAN style="COLOR: #000000">+=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">&</SPAN><SPAN style="COLOR: #000000">test_func3;<BR><BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> b </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> d3 (</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">);<BR>    assert (b </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">9</SPAN><SPAN style="COLOR: #000000">);<BR>}<BR></SPAN></DIV><BR>非常q净Q非常简z,不是吗?q个只花了我10分钟旉来写。。?BR><BR>D语言的委托非帔R效,有兴的可以试一下通过委托和直接调用之间的性能差别。上面这个自己实现的多分z֧托类Q效率也非常高,我的试l果是对于性能的媄响几乎可以忽略。想起那个历千辛万苦实现的CQ+多分z֧托类Q实现复杂、调试费时、运行效率还很低Q每每一惛_q心里那个难受啊。。。?BR><BR>再来看一下D语言强大的静态检查机Ӟ<BR><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">template XXX (</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> v)<BR>{<BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> n </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> v;<BR>    </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> assert (v </SPAN><SPAN style="COLOR: #000000">></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">);<BR>}<BR><BR></SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> main ()<BR>{<BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> n;<BR>    n </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> XXX</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">4</SPAN><SPAN style="COLOR: #000000">).n; </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> OK</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">    n </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> XXX</SPAN><SPAN style="COLOR: #000000">!</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">).n; </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> ~译错误</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">}</SPAN></DIV><BR>同样很漂亮?BR><BR>如果你觉得提CZ息不够友好,可以修改为:<BR><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">template XXX (</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> v)<BR>{<BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> n </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> v;<BR>    </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (v </SPAN><SPAN style="COLOR: #000000"><=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">)<BR>        pragma (msg, </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">template value must > 3</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>    </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> assert (v </SPAN><SPAN style="COLOR: #000000">></SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">);<BR>}</SPAN></DIV><BR>q是~译时的错误提示Q?BR><BR>Compiling test.d ...<BR>template value must > 3<BR>D:\workspace\dace\test.d(94): static assert  (3 > 3) is false<BR>D:\workspace\dace\test.d(173): template instance test.XXX!(3) error instantiating<BR><BR>我想以后有可能会扩充pragmaQ支持错误输出,q样׃用写重复的语句了Q可以简化成q样Q?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">template XXX (</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> v)<BR>{<BR>    </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> n </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> v;<BR>    </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (v </SPAN><SPAN style="COLOR: #000000"><=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">)<BR>        pragma (error, </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">template value must > 3</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR>}</SPAN></DIV><BR>q样看v来更好。不q目前有很多重要Ҏ要实现Q这U玩意可能要很久以后才会加入了?img src ="http://www.shnenglu.com/cpunion/aggbug/1083.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cpunion/" target="_blank">qiezi</a> 2005-11-11 17:13 <a href="http://www.shnenglu.com/cpunion/archive/2005/11/11/1083.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>D语言调用ActiveXQ在H口中嵌入ActiveXQ?/title><link>http://www.shnenglu.com/cpunion/archive/2005/11/11/1061.html</link><dc:creator>qiezi</dc:creator><author>qiezi</author><pubDate>Fri, 11 Nov 2005 04:16:00 GMT</pubDate><guid>http://www.shnenglu.com/cpunion/archive/2005/11/11/1061.html</guid><wfw:comment>http://www.shnenglu.com/cpunion/comments/1061.html</wfw:comment><comments>http://www.shnenglu.com/cpunion/archive/2005/11/11/1061.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/cpunion/comments/commentRss/1061.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cpunion/services/trackbacks/1061.html</trackback:ping><description><![CDATA[     摘要: q是一个从CUL到D的代码,原文误“Embed an HTML control in your own window using plain C”,它用Cl构模拟了虚表,q且实现了多个接口以完成对Web Browser控g的调用。在看完他的代码之后Q我对于COM/OLE的了解加׃一些,以前使用VC做过COM斚w的应用,也看q不COM斚w的书Q不q没有涉及到界面Q所以一直不知道如何把Activ...  <a href='http://www.shnenglu.com/cpunion/archive/2005/11/11/1061.html'>阅读全文</a><img src ="http://www.shnenglu.com/cpunion/aggbug/1061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cpunion/" target="_blank">qiezi</a> 2005-11-11 12:16 <a href="http://www.shnenglu.com/cpunion/archive/2005/11/11/1061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>D语言中的in/inout/out参数http://www.shnenglu.com/cpunion/archive/2005/11/10/1044.htmlqieziqieziThu, 10 Nov 2005 06:51:00 GMThttp://www.shnenglu.com/cpunion/archive/2005/11/10/1044.htmlhttp://www.shnenglu.com/cpunion/comments/1044.htmlhttp://www.shnenglu.com/cpunion/archive/2005/11/10/1044.html#Feedback0http://www.shnenglu.com/cpunion/comments/commentRss/1044.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/1044.htmlprivate import std.stdio, std.process;

void test(int a, inout int b, out int c)
{
    writefln(a);
    writefln(b);
    writefln(c);
    a 
= 3;
    b 
= 5;
    c 
= 7;
}

void main ()
{
    
int a = 0, b = 1, c = 2;
    test(a, b, c);
    assert (a 
== 0);
    assert (b 
== 5);
    assert (c 
== 7);
    std.process.system(
"pause");
}

在上面的例子里,E序在test函数中的输出语句输出:
0
1
0
也就是说Qout参数取值是无意义的Q它只用于赋倹{?BR>
q里有一个很大的问题Q调用test(a,b,c)Ӟ调用者对于c的D改变可能毫无知觉Q甚x为隐藏很qBUG。对此,许多人徏议加强检查,比如在调用时Q必L明inout/outQ?BR>
test(a, inout b, out c);

g能够起到一些警CZ用,不过q样一来,语法上倒不怎么l了?img src ="http://www.shnenglu.com/cpunion/aggbug/1044.html" width = "1" height = "1" />

qiezi 2005-11-10 14:51 发表评论
]]>
DMD最q的一些更?/title><link>http://www.shnenglu.com/cpunion/archive/2005/11/10/1039.html</link><dc:creator>qiezi</dc:creator><author>qiezi</author><pubDate>Thu, 10 Nov 2005 04:12:00 GMT</pubDate><guid>http://www.shnenglu.com/cpunion/archive/2005/11/10/1039.html</guid><wfw:comment>http://www.shnenglu.com/cpunion/comments/1039.html</wfw:comment><comments>http://www.shnenglu.com/cpunion/archive/2005/11/10/1039.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/cpunion/comments/commentRss/1039.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cpunion/services/trackbacks/1039.html</trackback:ping><description><![CDATA[v0.138 实现了字W串直接切片调用Q?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">    </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000">[] a </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">abcde</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">..</SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">];<BR>    writefln(a);<BR>    </SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000"> b </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">abcde</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">];<BR>    writefln(b);</SPAN></DIV><BR>另外修复了一些编译器和文档生成的BUG?BR><BR>v0.137的重要更新有Q?BR>隐式cd引用Q?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">auto c </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">abcde</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;  </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> c变量自动获得cdchar[]</SPAN></DIV>extern(linkage)在内嵌函C使用<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: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> test()<BR>{<BR>  </SPAN><SPAN style="COLOR: #0000ff">extern</SPAN><SPAN style="COLOR: #000000">(C) test1();<BR>}</SPAN></DIV><BR><BR>其它更新则主要集中于~译器工作、文工兗库{,暂时q没有特别o人兴奋的Ҏ加入进来,比如Qstack tracing, relation api{?img src ="http://www.shnenglu.com/cpunion/aggbug/1039.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cpunion/" target="_blank">qiezi</a> 2005-11-10 12:12 <a href="http://www.shnenglu.com/cpunion/archive/2005/11/10/1039.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>D语言令h喜爱的几个地?/title><link>http://www.shnenglu.com/cpunion/archive/2005/11/02/902.html</link><dc:creator>qiezi</dc:creator><author>qiezi</author><pubDate>Wed, 02 Nov 2005 08:35:00 GMT</pubDate><guid>http://www.shnenglu.com/cpunion/archive/2005/11/02/902.html</guid><wfw:comment>http://www.shnenglu.com/cpunion/comments/902.html</wfw:comment><comments>http://www.shnenglu.com/cpunion/archive/2005/11/02/902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/cpunion/comments/commentRss/902.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cpunion/services/trackbacks/902.html</trackback:ping><description><![CDATA[1、去掉了丑陋的宏?BR>C/C++中的宏是很o人厌烦的QD不允许再使用它?BR><BR>2、好用的字符串常量表辑ּ?BR>除了cC的用双引号的字W串帔R表达式以外,q可以用`字符。可以用x"68 65 6C6C 6F"来表C?hello"Qr"ab\na"则忽略字W串帔R中{义字W的转义作用Q还可以在字W串帔R后加上c, w或d来指C字W串帔R是char[]cd、wchar[]cdq是dchar[]cd。可以用~q算W连?个字W串?BR><BR>3、数字?BR>数字可以直接使用Q还可以q样来定义:int a = 3_029_301_000; 数字直接?包括整数、QҎ、复?表达式中Q“_”字W是被忽略的。另外还直接提供了复数类型?BR><BR>4、提供定长数l、变长数l、关联数l?BR>int[3] a定义一个定长数l;int [] a定义一个变长数l;int[int]定义一个关联数l,键类型是intQ值类型是intQint[char[]] a定义一个关联数l,键类型是char[]Q值类型是intQ用非常方ѝ?BR>可以使用foreach来遍历数l:<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"><IMG src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000"> (</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> index, </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> value; a)<BR><IMG src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align=top>  printf (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">%d: %d\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">, index, value);<BR><IMG src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000"> (</SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000">[] key, </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> value; a)<BR><IMG src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align=top>  printf (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">%.*s: %d\n</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">, index, value);</SPAN></DIV><BR>可以使用in操作W来判断某个值是否是兌数组的一个键Q?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"><IMG src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #0000ff">char</SPAN><SPAN style="COLOR: #000000">[]] a;<BR><IMG src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">hello</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000"> a)<BR><IMG src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align=top>  writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">hello</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);</SPAN></DIV><BR>数组可以切片(slice)Q?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"><IMG src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">[] a; <BR><IMG src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">[] b </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> a[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">..</SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">]; <BR><IMG src="http://www.shnenglu.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">[] c </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> a[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">..length];</SPAN></DIV><BR>{等。。。?BR><BR>5、其它还支持委托、函数指针、模ѝ异常、RAII、契U式~程、单元测试、with语句、auto/typeof、垃圑֛收、操作符重蝲、内联汇~、条件编译、嵌入到HTML{,它还标准化了ABI(q是C/C++最让h头痛的地方之一)。这些特性大部分都比较熟悉和实用Q下面简单介l一下条件编译和嵌入到HTML?BR><BR>6、条件编译?BR>在D中,可以使用version(VersionID)来进行条件编译:<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">version (Win32)<BR>{<BR>  </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.shnenglu.com/images/dot.gif"></SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">}<BR></SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>  </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">..</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">}</SPAN></DIV><BR>q可以用debug条gQ?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">debug<BR>{<BR>  </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.shnenglu.com/images/dot.gif"></SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">}<BR></SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR>{<BR>  </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.shnenglu.com/images/dot.gif"></SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #000000">}</SPAN></DIV><BR>或者:<BR>debug printf ("hello");<BR>静态条件编译:<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: #0000ff">const</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> n</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (n </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">)<BR>  writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">hello</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR>  writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">world</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);</SPAN></DIV><BR>cd查:<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: #0000ff">int</SPAN><SPAN style="COLOR: #000000"> n </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (</SPAN><SPAN style="COLOR: #0000ff">is</SPAN><SPAN style="COLOR: #000000">(n[]))<BR>  writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">like array</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (</SPAN><SPAN style="COLOR: #0000ff">is</SPAN><SPAN style="COLOR: #000000">(n:</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">))<BR>  writefln (</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">is an integer</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);</SPAN></DIV><BR><BR>7、嵌入HTML?BR>在一个HTML文g中,<code>?lt;/code>之间的部分可以当作D代码来编译。比如下面这D代码:<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: #0000ff"><</SPAN><SPAN style="COLOR: #800000">h1</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">This is a test</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">h1</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">code</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR>import std.c.stdio;<BR><BR>int </SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">font </SPAN><SPAN style="COLOR: #ff0000">size</SPAN><SPAN style="COLOR: #0000ff">=+1</SPAN><SPAN style="COLOR: #0000ff">><</SPAN><SPAN style="COLOR: #800000">b</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">main</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">b</SPAN><SPAN style="COLOR: #0000ff">></</SPAN><SPAN style="COLOR: #800000">font</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">()<BR>{<BR></SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">span </SPAN><SPAN style="COLOR: #ff0000">style</SPAN><SPAN style="COLOR: #0000ff">="color:red"</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">printf</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">span</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">u</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #ff0000">&quot;</SPAN><SPAN style="COLOR: #000000">hello world\n</SPAN><SPAN style="COLOR: #ff0000">&quot;</SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">u</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #000000">return 0;<BR>}<BR></SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">code</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">hr </SPAN><SPAN style="COLOR: #0000ff">/></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #0000ff"><</SPAN><SPAN style="COLOR: #800000">h1</SPAN><SPAN style="COLOR: #0000ff">></SPAN><SPAN style="COLOR: #000000"> End </SPAN><SPAN style="COLOR: #0000ff"></</SPAN><SPAN style="COLOR: #800000">h1</SPAN><SPAN style="COLOR: #0000ff">></SPAN></DIV><BR>把它存储为HTML文gQ可以直接用dmd~译器编译?img src ="http://www.shnenglu.com/cpunion/aggbug/902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cpunion/" target="_blank">qiezi</a> 2005-11-02 16:35 <a href="http://www.shnenglu.com/cpunion/archive/2005/11/02/902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>配置D语言~程环境http://www.shnenglu.com/cpunion/archive/2005/11/02/892.htmlqieziqieziWed, 02 Nov 2005 03:17:00 GMThttp://www.shnenglu.com/cpunion/archive/2005/11/02/892.htmlhttp://www.shnenglu.com/cpunion/comments/892.htmlhttp://www.shnenglu.com/cpunion/archive/2005/11/02/892.html#Feedback14http://www.shnenglu.com/cpunion/comments/commentRss/892.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/892.html
D语言的介l最好是?A >uframer的blogQ他译了D语言的大部分文档。当然由于D语言目前一直处于测试版Q文档和最新的~译器之间可能有很多不一致?BR>
D语言的编译器目前?个,DMD和GDCQDMD比较Ҏ配置Q可以从http://www.digitalmars.com/d/dcompiler.html下蝲最新版。下载的压羃包直接解压到L一个分区的根目录,q把\dm\bin和\dmd\bin加到PATH环境变量里即可用?BR>
写一个简单的D语言E序Q当然还是经典的HelloWorldE序Q?BR>
void main ()
{
    printf (
"Hello world!\n");
}

和CE序基本上一栗把它保存ؓhello_world.d?BR>
下面直接在这个源文g所在的目录下,执行dmd hello_world.dQ即可编译出hello_world.exeQ执行它p在控制台打印出Hello world!?BR>
接下来到http://www.dsource.org/projects/build/下蝲buildE序Q这是在DC֌使用比较q泛的一个程序。由于最新的v2.09版已l发C一些严重的BUGQ所以最好到http://svn.dsource.org/projects/build/downloads/下蝲v2.08版。把下蝲?exe文g改名为build.exeq放|合适的文g夹下Qƈ讄PATH环境变量?为简单v见我是直接把它放在\dm\bin文g夹下)

下面试一下buildE序Q编写一个hello_world.brf文gQ保存在hello_world.d同一路径下,文g内容如下Q?BR>
-cleanup
hello_world.d


然后执行build @hello_world卛_~译出hello_world.exe?/P>

akIDE是一个D语言的IDEQ可以到http://www.lessequal.com/akide下蝲Q它只需要DMD支持?BR>
D语言~译速度非常?q也是Walter Bright对C++不满的一个重要原?。dsource.org中的mango目包含755个D源文Ӟ但在我的机器上编译成.lib文g只需?U时间?BR>
D语言性能也很不错Q有2D语言和C/C++、Java、C#的性能比较文章Q?A >
http://mag.vchelp.net/200312/fanyi.htm
http://mag.vchelp.net/200312/fanyi_2.htm

相关目介绍Q?BR>mango: q是一个专注于服务端编E的目Q目前主要由Kris开发、维护,实现了servletQ暂时还没有太复杂的功能Q不q很值得期待?BR>dwt: D语言的swt开发包Q界面开发首选。看qeclipse界面的应该有比较q印象。由于大部分代码是从java代码转换q来的,所以类名、接口等都没有改变?BR>dui: D语言的别一个界面开发包Q基于GTK?BR>build: 上面介绍q的build工具?BR>dcoder: Zvs.net的D语言语法高亮插g?BR>dsp: 全称是Dynamic Servlet Pages?BR>
以上目都可以在http://www.dsource.org/projects/扑ֈ详细资料?BR>
DMDScript是一个类gJavaScript的脚本系l,可以?A >http://www.digitalmars.com/dscript/扑ֈ详细资料Q这个我q没有用过?BR>

最后附?个用dwt开发的界面(注:׃本h不习惯安装杀毒YӞ下蝲请先杀?Q?/FONT>
1、仿eclipse界面Q?BR>http://www.shnenglu.com/Files/cpunion/dummyeclipse.rar
2、dwt控g演示Q?BR>http://www.shnenglu.com/Files/cpunion/controlexample.rar

在windows xp主题下效果比较好。这2个程序在我的机器上分别只?.4M?.2M内存Q启动时间也不1U,不要被eclipse的启动时间吓坏了?BR>



扑ֈ了这2张图Q?BR>controlexample.pngdummyeclipse.png



qiezi 2005-11-02 11:17 发表评论
]]>
最q比较忙http://www.shnenglu.com/cpunion/archive/2005/10/08/595.htmlqieziqieziSat, 08 Oct 2005 15:15:00 GMThttp://www.shnenglu.com/cpunion/archive/2005/10/08/595.htmlhttp://www.shnenglu.com/cpunion/comments/595.htmlhttp://www.shnenglu.com/cpunion/archive/2005/10/08/595.html#Feedback1http://www.shnenglu.com/cpunion/comments/commentRss/595.htmlhttp://www.shnenglu.com/cpunion/services/trackbacks/595.html
1、Ruby on Rails

前阵子看了一下Ruby on RailsQ不ؓ其深深折服,为RubyQ也为Rails?BR>
照着Four Days on Rails做了一遍,虽然对Ruby不甚熟悉Q不q一路下来感觉非常轻松,在搞明白:xxx?xxx"是同一个意思以后,l于能看懂大部分代码了,也ؓq种语法叫好Q要知道很多时候引号ƈ不好用,当出现嵌套的时候?FONT style="BACKGROUND-COLOR: #a9a9a9">(注:在Ruby里,"hello, #{user[:name]}"表示把user["name"]的值放到那个引号里面,q样做可以不仔细去考虑是不是用单引号)


接着试了一下typoQ一个ruby写的blogE序Q看到它hd功能Q而在4 days中ƈ没有看到Q于是找了相兌料,原来Rails中已l有q东西了Q简单查看了文以后Q就? days中的那个演示目加上了登录功能,前后不过十来分钟?BR>
q样看来Q一个h要做一个blogE序Q大?-3时够了,包括~写数据库模式、生成管理者用的MVCl构(hd修改删除{功?、添加登录功能,在此基础上再生成一个ControllerQ简单修改就能改成供其它用户使用的阅ȝ面,再稍费点就能加上评论功能了。当然离标准的blogE序q有D距,比如q不支持RSSQ不q自q来写点东西记点笔C么的Q够用了?BR>
2、Ajax on Rails

接着学习了Ajax on RailsQ非常好用的东东Q文档ƈ不是很多Q简单看了一下,觉得L的想法还有点距离。我希望是可以实现像Gmail一Pd一些变量过来,在页面上动态生成元素,而不是读取其它页面ƈ把其中的元素替换掉当前页面上的元素,或者是d到当前页面上q么单。我查看qGmail界面的源代码Q好像是使用q؜淆器Q不q还是可以看出来Q它是从服务端读取一些变量,d客户端再把它转成可视的元素?BR>
微Y的space.msn.com在注册时Q有一个验证码Q当你看不清时可以点d边的按钮再换一个验证码Q这时只会刷新验证码而不用刷新整个页面,q种东西使用Ajax on Rails应该很轻村ְ可以完成。不q我q不知道在Rails中如何生成验证码呢,应该是用其它的库来生成吧,有空查一下看看?BR>
3、Ruby and Rails

Ruby的语法对于我q样的初学?实际上ƈ未正式学?来说Q有些地方理解v来还真有炚wQ不q它的代码看h却很舒服Q简z美观,g很多语法都是Z观Q当然满的end除外?BR>
Rails同样l我z美观的印象Q用简单,没有什么废话,视图如果不修改的话,甚至可以不生成出来?BR>
不知道效率如何,不过听说Ruby比Pythonq行效率要高Q豆瓣用Python能做出来Q我想用Ruby应该也可以做够接受的东西?BR>
有空要好好学一下RubyQؓ了Rails?BR>
4、asgard

最q实在是太忙了,asgard目起了个头又懒得动了,许多情况下用C++都意味着要写很多代码Q目前完成了异步回调函数的泛cd匚wQ在~写调用函数的适配器时Q虽然已l想Z解法Q只是要写大量的模板Q天天在模板堆里头都是痛的,只好先放一放了?BR>

注:
1、上面提到的“异步回调函数的泛类型匹配”,指的是下面的做法Q?BR>void callback (int, short, const char*);
Method <string(in<char>, in<char>)> method;
method.async_call ('a', 'b', callback);
׃char可以转型到int, shortQ而out<string>可以转型到const char*Q所以让它支持这U“泛”类型匹配也是理所当然的了Q这个东西已l完成了?BR>
2、“调用函数的适配器”是更复杂的一个东西,用在服务器端Q?BR>Method <void(inout<Buffer<char> >, in<string>)> my_strcat;
my_strcat.setMethod (Adapter <void(Default<1>, Default<2>, ContainerSize<1>)> (strncat) );

q是最l简化了的Ş式,比上ơ所说的单了不少Q因为很多东西是可以推导出来的,q也是测试证明可以实现的Q一个简单的修改是把Adapter从类改ؓ一个函敎ͼ׃模板函数的参数类型可以推导出来,所以省Mstrncat函数cd的描q?BR>
实际上是把char* strncat(char*, const char*, size_t)匚wl上面这个methodQAdapter承担解释角色?BR>
它的函数cd的模板参CQvoid可以推导为out<void>Qstrcat的调用结果赋lout<void>Q可以不理会Q实际上是用偏特化来忽略它的,因ؓ我的vector <IParameter*>中根本不包括out<void>q个对象?BR>
后面的Default<1>表示使用默认的{换器Q即直接把Buffer<char>对象转成char*cdQ由于Buffer<T>中实Coperator T*Q这个{换不成问题,下一个是Default<2>Q在in<string>中也实现了operator const char*Q所以这个{换也很顺利,再下一个是ContainerSize<1>表示从Buffer<char>对象中取容器的大,q也是个模板?BR>
目前一共实C3个模板,Default<int>默认转换QSize<int>取sizeofQContainerSize取容器大?BR>
写模板既有挑战,又有困难Q有时甚x攑ּ的想法,甚至有朋友笑话说Qh安动态语a了,你还在用这U宏一L语言。我也只好一W置之,q样的功能在动态语a里多么容易呀Q的在做一U不不明智的事。。?img src ="http://www.shnenglu.com/cpunion/aggbug/595.html" width = "1" height = "1" />

qiezi 2005-10-08 23:15 发表评论
]]>最q要学习的东ѝ?/title><link>http://www.shnenglu.com/cpunion/archive/2005/09/14/259.html</link><dc:creator>qiezi</dc:creator><author>qiezi</author><pubDate>Wed, 14 Sep 2005 03:24:00 GMT</pubDate><guid>http://www.shnenglu.com/cpunion/archive/2005/09/14/259.html</guid><wfw:comment>http://www.shnenglu.com/cpunion/comments/259.html</wfw:comment><comments>http://www.shnenglu.com/cpunion/archive/2005/09/14/259.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/cpunion/comments/commentRss/259.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cpunion/services/trackbacks/259.html</trackback:ping><description><![CDATA[<P>1、动态语a?BR>C/C++q类静得可怕的语言Q很多方面通常会搭配一个动态一点东ѝ比如pythonQ已l在目中用)QrubyQ还没学习)QluaQ看样子不错Q?BR>以下?A href="mailto:cpp@codingnow.com">cpp@codingnow.com</A>中的一点评论:<BR><U>我一直坚信未来会出现高低搭配的局面,像Java/C#q样的半动不静的中语言会逐渐“为”JVM和CLR上的pȝ语言Q应用开发的d必将由更加动态的脚本语言承担。目前的Python, Ruby和Lua都有可能。如果从我的角度Ԍ我希望最后胜出的是LuaQ因为Python思维有些混ؕQRuby虽然很纯Q但是语a设计q于复杂Q只有Lua是符合我的美学观——简单而又强大Q这一点跟云风意见一致?BR></U>我自己只使用qpythonQ确实可以作为静态语a的补充?/P> <P>2、要深入学习antlr?BR>很多时候,~程语言不是领域描述的最佌aQ需要找一个或~写一个{换工兗?BR>antlr可以帮我们实C个自pa的词法分析程序,而不需要忍受yacc生成的天书代码?/P> <P>3、lua和boost::python?BR>大致看了一下它们包装CQ+cȝ方式Q有点相伹{?BR>我打做一个CQ+语言的轻量分布式包装库Q有些地方可以参考?/P> <P>4、prolog?BR>满好玩的东西?/P><img src ="http://www.shnenglu.com/cpunion/aggbug/259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cpunion/" target="_blank">qiezi</a> 2005-09-14 11:24 <a href="http://www.shnenglu.com/cpunion/archive/2005/09/14/259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <a href="http://www.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://92ebook.com" target="_blank">һþþƷɫa</a>| <a href="http://moonshile.com" target="_blank">ŷƷƵ</a>| <a href="http://qqszdq.com" target="_blank">91þþƷŮ</a>| <a href="http://tongrenyaoye.com" target="_blank">һƵ߿</a>| <a href="http://hh474.com" target="_blank">ɫ</a>| <a href="http://hazymall.com" target="_blank">޾ƷƵ</a>| <a href="http://wwwnnnn.com" target="_blank">ھƷþþþþþӰ</a>| <a href="http://yp77741.com" target="_blank">ŷҹ</a>| <a href="http://238918.com" target="_blank">ŷƷ</a>| <a href="http://77smsm.com" target="_blank">鶹ƷƵ</a>| <a href="http://6673328.com" target="_blank">ŷvava㽶</a>| <a href="http://360695.com" target="_blank">ŷѸ߹ۿ</a>| <a href="http://pp88qq.com" target="_blank">˳վ߹ۿŷ</a>| <a href="http://aabbcc11.com" target="_blank">ۺϼ</a>| <a href="http://246767.com" target="_blank">ŷɫձ</a>| <a href="http://aotaotao.com" target="_blank">þþþһ</a>| <a href="http://xashp.com" target="_blank">ŷ</a>| <a href="http://8332777.com" target="_blank">ŷɫƬ</a>| <a href="http://www-442336.com" target="_blank">պŷһ߹ۿ </a>| <a href="http://yh-hy.com" target="_blank">޹ŷһ</a>| <a href="http://qiezi2vip.com" target="_blank">պƷһ</a>| <a href="http://91mdtv.com" target="_blank">avѿ</a>| <a href="http://cc28256.com" target="_blank">޾Ʒ߹ۿ</a>| <a href="http://176sfsf.com" target="_blank">þþùһ</a>| <a href="http://605012.com" target="_blank">ŷ칫18xxxxhd</a>| <a href="http://woaigougou.com" target="_blank">ŷ߲</a>| <a href="http://xiehaihua.com" target="_blank">޾Ʒպ</a>| <a href="http://9928k.com" target="_blank">˳߲</a>| <a href="http://7755cc.com" target="_blank">þþ</a>| <a href="http://287975.com" target="_blank">ŷ͵</a>| <a href="http://chunshanketang.com" target="_blank">ھƷŮ߹ۿ</a>| <a href="http://20074972.com" target="_blank">ַ</a>| <a href="http://457745.com" target="_blank">ŷպۺ</a>| <a href="http://jxchunlong.com" target="_blank">ŷŷ</a>| <a href="http://91keshi.com" target="_blank">˳߹ۿ</a>| <a href="http://www99mmnn.com" target="_blank">¹͵ľƷ</a>| <a href="http://668527.com" target="_blank">ŷ</a>| <a href="http://56718ca.com" target="_blank">þùƷ˿</a>| <a href="http://69kun.com" target="_blank">һƷ</a>| <a href="http://9911444.com" target="_blank">ۺҳ</a>| <a href="http://592xyy.com" target="_blank">ҹƷþþþþþ99ӣ</a>| <a href="http://d1112.com" target="_blank">ŷպ߹ۿƵ</a>| <a href="http://ayxchc.com" target="_blank">޾ƷƷԲۿ˳ </a>| <a href="http://jafzjz.com" target="_blank">ŷsmƵ</a>| <a href="http://uuuu79.com" target="_blank">һ</a>| <a href="http://bixiuge.com" target="_blank">þþƷa</a>| <a href="http://kk1xx-com.com" target="_blank">þþþ.com</a>| <a href="http://fuqiba.com" target="_blank">߲һ</a>| <a href="http://596361.com" target="_blank">ҹһ</a>| <a href="http://6688se.com" target="_blank">þùۺᆱƷ</a>| <a href="http://yw1998.com" target="_blank">պŷ</a>| <a href="http://gyzhoucheng.com" target="_blank">ۺɫ </a>| <a href="http://119553.com" target="_blank">޹</a>| <a href="http://www5909.com" target="_blank">ŷȫۿɫ</a>| <a href="http://zhuankee.com" target="_blank">ŷ</a>| <a href="http://ipx758.com" target="_blank">Ӱȷһ</a>| <a href="http://959425.com" target="_blank">þaaaaxxxx</a>| <a href="http://ddh345.com" target="_blank">þþŷղv</a>| <a href="http://1355456.com" target="_blank">ƷþþþëƬƨ </a>| <a href="http://ddh345.com" target="_blank">ŷƷһһƵ</a>| <a href="http://www18889.com" target="_blank">鶹ƷƵ߹ۿ</a>| <a href="http://hkbsi.com" target="_blank">պŷ</a>| <a href="http://592xyy.com" target="_blank">ҹƵһ</a>| <a href="http://49234c.com" target="_blank">þԴ</a>| <a href="http://www47755.com" target="_blank">޾Ʒۺ</a>| <a href="http://mysuteng.com" target="_blank">ŷպŷһ</a>| <a href="http://aidingcai.com" target="_blank">һƷ</a>| <a href="http://aqd072.com" target="_blank">ŷƵ߹ۿ</a>| <a href="http://25axxa.com" target="_blank">ƷvƬ߹ۿ</a>| <a href="http://xigou666.com" target="_blank">avվ</a>| <a href="http://592xyy.com" target="_blank">ŷһŷһ߲</a>| <a href="http://xiuren2021.com" target="_blank">ɫһ</a>| <a href="http://49028b.com" target="_blank">þþþþŷ</a>| <a href="http://1332233.com" target="_blank">þ</a>| <a href="http://7213523.com" target="_blank">ŷһ߹ۿ</a>| <a href="http://qqqtrip.com" target="_blank">ŷպѹۿһ</a>| <a href="http://www-8438.com" target="_blank">һ߹ۿƵ</a>| <a href="http://heyzo1199.com" target="_blank">ŷҹ</a>| <a href="http://easypufu.com" target="_blank">þ</a>| <a href="http://iotbzw.com" target="_blank">պҹһ</a>| <a href="http://fdgkinetic.com" target="_blank">Ʒ69Ƶһ</a>| <a href="http://0061366.com" target="_blank">ŷպ</a>| <a href="http://300644.com" target="_blank">ŷˬ</a>| <a href="http://www497171c.com" target="_blank">þۺϾþ88</a>| <a href="http://sepapapa8888.com" target="_blank">ҹƷþþþþ99</a>| <a href="http://by1473.com" target="_blank">þþþ</a>| <a href="http://woaigougou.com" target="_blank">ŷպ</a>| <a href="http://www-9694.com" target="_blank">þۺɫ</a>| <a href="http://wwwok1965.com" target="_blank">Ƶֱ</a>| <a href="http://www47777.com" target="_blank">޹Ʒv</a>| <a href="http://avicpharm.com" target="_blank">ŷۺƵ</a>| <a href="http://4915w.com" target="_blank">9lƷþþþ鶹</a>| <a href="http://caokk1.com" target="_blank">һ</a>| <a href="http://605012.com" target="_blank">ŷˮƵ</a>| <a href="http://hjaa7.com" target="_blank">ŷ</a>| <a href="http://8004006.com" target="_blank">þþƷһþ99Ʒ</a>| <a href="http://51shoudian.com" target="_blank">ŷձƷ</a>| <a href="http://dgxinshidai.com" target="_blank">޾žŰƵ</a>| <a href="http://njhuike.com" target="_blank">þۺϺݺۺϾþü</a>| <a href="http://613by.com" target="_blank">ywҹƷƵ</a>| <a href="http://7770790.com" target="_blank">ŷպһ</a>| <a href="http://858185gg.com" target="_blank">hƷƵ߲</a>| <a href="http://huohuoglobal.com" target="_blank">ҹþûɫ</a>| <a href="http://qiezi2vip.com" target="_blank">һɫþۺ޾Ʒ</a>| <a href="http://avtbr123.com" target="_blank">ŷ պ һƵ</a>| <a href="http://bgflee.com" target="_blank">һɬ</a>| <a href="http://www333444123.com" target="_blank">޸ƵĻ</a>| <a href="http://4009935888.com" target="_blank">ŷ</a>| <a href="http://1397h.com" target="_blank">ŷaƬһ</a>| <a href="http://221080.com" target="_blank">þþƵ</a>| <a href="http://862924.com" target="_blank">ŷɫ</a>| <a href="http://avjj80.com" target="_blank">һŷ</a>| <a href="http://pnxingmei.com" target="_blank">޻վ߹ۿ</a>| <a href="http://739191g.com" target="_blank">ŷ18av</a>| <a href="http://233116.com" target="_blank">鶹þ</a>| <a href="http://7749137.com" target="_blank">þþþþû</a>| <a href="http://xingzhiyin85.com" target="_blank">ŷһƵ</a>| <a href="http://naturalgiftfashion.com" target="_blank">վ</a>| <a href="http://555415.com" target="_blank">xxxx137</a>| <a href="http://zuan3344.com" target="_blank">޷</a>| <a href="http://www35353.com" target="_blank">߲Ŷ99</a>| <a href="http://oksousou.com" target="_blank">ĹھƷ԰</a>| <a href="http://tongrenyaoye.com" target="_blank">պһ߲</a>| <a href="http://1392266.com" target="_blank">Ʒa</a>| <a href="http://489633.com" target="_blank">Ʒ</a>| <a href="http://ategpu.com" target="_blank">ƷŮþ</a>| <a href="http://www77711.com" target="_blank">Ʒݾþ</a>| <a href="http://hernameplz.com" target="_blank">Ʒþù</a>| <a href="http://94wr.com" target="_blank">ƷŮ</a>| <a href="http://18av18.com" target="_blank">Ʒþþþþavغ </a>| <a href="http://yiapk.com" target="_blank">ŷպƷ</a>| <a href="http://phitris.com" target="_blank">ȾƷƵ߹ۿ</a>| <a href="http://17ang.com" target="_blank">þþҹҹҹ</a>| <a href="http://481323.com" target="_blank">ѾþþƷƵ</a>| <a href="http://www-24333.com" target="_blank">ŷŷۺ </a>| <a href="http://www456456.com" target="_blank">լ66һ</a>| <a href="http://k82net.com" target="_blank">һպһ߹ۿ</a>| <a href="http://asanny.com" target="_blank">ۺŷƵ</a>| <a href="http://bosengame.com" target="_blank">һƵ߹ۿ</a>| <a href="http://7234hh.com" target="_blank">һһþۺϺݺϾӰҵ</a>| <a href="http://678255.com" target="_blank">ŮƵ</a>| <a href="http://mom8888.com" target="_blank">ƵպƷ</a>| <a href="http://wwwavtb1122.com" target="_blank">ŷպIJ</a>| <a href="http://bjygp.com" target="_blank">ŷһƵվ</a>| <a href="http://arielteam.com" target="_blank">þþ99</a>| <a href="http://k91cm.com" target="_blank">ŷŷ޹պmv쿴 </a>| <a href="http://1177898.com" target="_blank">ŷƷպ</a>| <a href="http://4986888.com" target="_blank">޻ҳƵѹۿ</a>| <a href="http://dy123456.com" target="_blank">͵Ƶ</a>| <a href="http://5858yp.com" target="_blank">þþƷ</a>| <a href="http://ooonefteprompellets.com" target="_blank">ŷ12</a>| <a href="http://by1473.com" target="_blank">һ</a>| <a href="http://pron12.com" target="_blank">޳߹ۿƵ</a>| <a href="http://17cao8.com" target="_blank">Ƶ㶮һ </a>| <a href="http://lampreydb.com" target="_blank">žž91</a>| <a href="http://337105.com" target="_blank">ŷһ</a>| <a href="http://www-n77.com" target="_blank">þۺɫ</a>| <a href="http://yckjwb.com" target="_blank">ŷƬѹۿ</a>| <a href="http://montnove.com" target="_blank">߲</a>| <a href="http://maokk77.com" target="_blank">˾Ʒ</a>| <a href="http://www-49386.com" target="_blank">Ʒŷþþþ޹</a>| <a href="http://sdkingpin.com" target="_blank">޾Ʒþþþö</a>| <a href="http://800716.com" target="_blank">һ</a>| <a href="http://jnjpsm.com" target="_blank">Դav</a>| <a href="http://cc1024.com" target="_blank">þۺϾɫ</a>| <a href="http://www-222kkk.com" target="_blank">պһƬַ</a>| <a href="http://56qn.com" target="_blank">þþþƷһ</a>| <a href="http://fjccjq.com" target="_blank">ŷƵ߹ۿ</a>| <a href="http://mfgun.com" target="_blank">ƷպƷŷƷ</a>| <a href="http://598327.com" target="_blank">Ʒwww17con</a>| <a href="http://yzstbjt.com" target="_blank">պƵ</a>| <a href="http://961318.com" target="_blank">Ƶ</a>| <a href="http://snis675.com" target="_blank">þˬˬ</a>| <a href="http://czjrby.com" target="_blank">99˳ۺ</a>| <a href="http://ssss96.com" target="_blank">þavۺϺɫ</a>| <a href="http://avtb2120.com" target="_blank">ŷպ߲</a>| <a href="http://avjj80.com" target="_blank">߾Ʒһ</a>| <a href="http://236664.com" target="_blank">ŷëƬ</a>| <a href="http://chinashixin.com" target="_blank">þþžžƷ99Ʒ</a>| <a href="http://725443.com" target="_blank">ձŮ߹ۿ</a>| <a href="http://107766a.com" target="_blank">һƵ</a>| <a href="http://miya2223.com" target="_blank">91þþƷwwwˬ</a>| <a href="http://477980.com" target="_blank">þþþƷҹٸ</a>| <a href="http://4449992.com" target="_blank">պƷƵһ</a>| <a href="http://6688zf.com" target="_blank">ҹƵ߹ۿһ</a>| <a href="http://gs-qintai.com" target="_blank">һŷ</a>| <a href="http://www01614.com" target="_blank">ŷɫƷƵ</a>| <a href="http://ad377.com" target="_blank">99Ʒһ</a>| <a href="http://aqdav81.com" target="_blank">޹Ƶ</a>| <a href="http://8xxjj.com" target="_blank">ŷƷblacked18</a>| <a href="http://54zcr.com" target="_blank">ŷ</a>| <a href="http://ylnnc.com" target="_blank">޹ɫ</a>| <a href="http://www-3844444.com" target="_blank">ŷ˶˫</a>| <a href="http://syruili.com" target="_blank">һ</a>| <a href="http://799868.com" target="_blank">һɫ**ۺ޾Ʒ </a>| <a href="http://zzzz80.com" target="_blank">˾Ƶ</a>| <a href="http://by71222.com" target="_blank">ŷһ</a>| <a href="http://88848885.com" target="_blank">avһ</a>| <a href="http://iotbzw.com" target="_blank">˾Ƶþ</a>| <a href="http://www-236677.com" target="_blank">þþŷƷ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>