從D語言看C Template語法

2021-04-16 07:33:24 字數 1164 閱讀 5937

d語言是一門新興的語言,它試圖結合c/c++效能上的高效,同時又象python、ruby等「現代」語言那樣具備高效的生產力。csdn曾經對其做過專題報道。

我本人蠻喜歡d語言的語法,覺得當之無愧的簡潔典雅。當然需要澄清的是,我不想讓人誤會,我不是要倡導「c/c++已死,請使用d語言」。本文也沒有打算全面去討論d語言。這裡我只是把目光鎖定在d語言的template語法上。

我們先來看看c++中如何實現階乘。

1)用函式實現階乘:

intfactorial(

intn)

void

test()

2)用模板實現的階乘:

template 

<

intn

>

struct

factorial

; };

template 

<>

struct

factorial

<0

>;};

void

test()

再來看看d語言中的階乘。普通函式我們就不寫了,這裡列出d語言支援的兩套模板語法:

1)和c/c++類似的模板文法:

template factorial(

intn)

template factorial(

intn : 0

)void

test()

2)d語言引入的新型模板文法:

template factorial(

intn)

比較一下,我們不難理解,d語言對c++的模板文法主要做了以下2點改變:

1)將c++模板的

改為了!(t)。並將 factorial

::result 形式改為了 factorial!(n)。

2)引入了新的 static

if 文法。

引起我注意的是改變2)。很明顯,d語言在試圖讓寫模板的人思維方法可以象寫普通的函式那樣進行。這是乙個很有意義的嘗試。我們設想一下,如果c++ template也來支援 static

if 文法:

template 

<

intn

>

struct

factorial

;else

enum;};

也許這會是乙個不錯的嘗試。 

從D語言看C Template語法

d語言是一門新興的語言,它試圖結合c c 效能上的高效,同時又象python ruby等 現代 語言那樣具備高效的生產力。csdn曾經對其做過專題報道。我本人蠻喜歡d語言的語法,覺得當之無愧的簡潔典雅。當然需要澄清的是,我不想讓人誤會,我不是要倡導 c c 已死,請使用d語言 本文也沒有打算全面去討...

從D語言看C Template語法

d語言是一門新興的語言,它試圖結合c c 效能上的高效,同時又象python ruby等 現代 語言那樣具備高效的生產力。csdn曾經對其做過專題報道。我本人蠻喜歡d語言的語法,覺得當之無愧的簡潔典雅。當然需要澄清的是,我不想讓人誤會,我不是要倡導 c c 已死,請使用d語言 本文也沒有打算全面去討...

C語言從記憶體上看指標

從下圖知道指標也是有位址的 在來看指標與變數的的記憶體塊 紅線是指標的位址 藍線是指標指向變數的位址ps 我把變數賦了初值 從上圖可以看出指標的位址裡面的值為 00 fe 6f 00 h x86的指標大小是4 因為大小端問題要從高位址向下 所以指標的值應該是 00 6f fe 00 h 而指標位址裡...