pcc++先行編譯語言( c++ pre-compilation language ) ,是一種面向類的、存在於先行編譯期的解釋語言。專門用來產生c++代碼。
先行編譯期語言,大大地提高了程式的複用性,提高了運行時效率。
pc++包括宏機制和模板機制。
c++ 編譯期編程工具:
template 編譯器整數計算 typedefs
1 templates 更明確地是指 template speciclization(模板特化)--提供編譯期間的 if 敘述。一如先前見過的length ,特化版本能夠在 typelists和其它型別之間形成差異。
2 integer calculations 提供真實的數值計算能力。用以從類轉化為數值。所有的編譯期數值都是不可變的。一旦你為它定義了一個整數常數,例如一個枚舉值,就不能再改變它。
3 typedefs 用來引進“有名類型常數( named type constants ) 它們是定義之後就被凍結。
4 遞迴。對應於c++ 語言中的函數。
類型識別機制
sizeof()
繼承
pcc++的繼承表現通過遞迴來實現。代碼的形式類似c++的重載。
derived to-base 類型轉換通過模板偏特化來實現。
1 、最簡單的pcc++
在矩陣轉置(matrix inversion)的運算中,通常需要定義兩個大小相同而維數交換的數組:
char original[3][2];
char target[2][3];
一旦original維數發生變化,target的維數也需要修改。使用sizeof()可使代碼錶現出更好的適應性: char original[3][2];
char target[ sizeof(a) ];
sizeof()有驚人的威力,你可以把sizeof用在任何錶達式身上。sizeof()在編譯直接
傳回運算式結果的大小。sizeof()可以感知重載( overloading )、模板具現( template instantiation
)、 轉換規則( conversion rules ),或任何可發生於c++運算式身上的機制。