本專欄文章列表
一、何為物件導向
二、C語言也能實現物件導向
三、C++中的不優雅特性
四、解決封裝,避免介面
、合理使用模板,避免程式碼冗餘
六、C++也能反射
七、單例模式解決靜態成員物件和全域物件的建構順序難題
八、更高級的預處理器PHP
八、更為高階的預處理器PHP
C++的巨集在某些情況下非常難用,例如將程式碼展開成為這樣:
Macro( A, B, C, D )
=>
func(“A” , A);
func(“B”, B);
func(“C”, C);
func(“D”, D);
test(A);
test(B);
test(C);
test(D);
這對巨集來說,太困難了,為了能實現複雜的巨集展開,我們希望用更高階的預處理器來實現這個功能。
我們在這裡使用PHP進行程式碼的預處理工作,將PHP程式碼當作C++的巨集使用。
當然,你也可以用python做程式碼產生工作,但由於php是內嵌式的,處理起來可能更方便一些,當然,其他語言配上模板也是可以的。
<code><span>/* main.php */</span> <?php $return_m = <span>"return a + b;"</span> ?> <span>#include <iostream></span><span>using</span><span>namespace</span><span>std</span>; <span>int</span> func(<span>int</span> a, <span>int</span> b) { <?php echo $return_m; ?> } <span>int</span> main() { <span>cout</span> << func(<span>1</span>, <span>2</span>) << endl; <span>return</span><span>0</span>; }</code>
我們用以下指令產生C++程式碼:
<code>php main.php > main.cpp </code>
好的,下面就和正常的專案編譯一樣了,你甚至可以將php的指令寫入到makefile中,自動化產生
以上就介紹了C和C++的物件導向專題(8)-更進階的預處理器PHP,包含了方面的內容,希望對PHP教學有興趣的朋友有所幫助。