C和C++的物件導向專題(8)——更為進階的前置處理器PHP

來源:互聯網
上載者:User

標籤:php   c++   前置處理器   代碼產生   宏   

本專欄文章列表

一、何為物件導向

二、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是內嵌式的,處理起來可能更方便一些,當然,其他語言配上模板也是可以的。

/* main.php */<?php $return_m = "return a + b;" ?>#include <iostream>using namespace std;int func(int a, int b) {    <?php echo $return_m; ?> }int main() {    cout << func(1, 2) << endl;    return 0;}

我們用如下指令產生C++代碼:

php main.php > main.cpp

好的,下面就和正常的項目編譯一樣了,你甚至可以將php的命令寫入到makefile中,自動化產生

C和C++的物件導向專題(8)——更為進階的前置處理器PHP

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.