2011-12-01 59 views

回答

0

我假設你說的「宏」意味着讓LP工具像C預處理器和大多數裝配器一樣進行「宏替換」。

宏替代是「語法糖」。這是一種編寫代表許多類似細節的單一符號的方法。因此,術語「宏觀」:這是「宏觀編程」,寫在更高層次的抽象。

這是我們在過去沒有面向對象編程提供易於訪問的抽象層時所做的。

從技術上講,可以在C中使用函數調用來實現抽象層和宏風格的編程。預處理器「宏」編程不需要。例如,我們習慣將內聯函數定義爲預處理器「宏」來手動優化我們的代碼。這是因爲C編譯器在早期並沒有很好地優化。

既然我們有OO編程,那麼就不需要更原始的編程語言的宏功能。

Literate編程宏功能用於非OO語言(如C和Pascal),以在LP級別創建類似功能和類似於繼承的功能。

這沒有意義。只需定義適當的類並使用適當的繼承。

+0

謝謝。它有幫助 – WhatisThat

+1

我不明白你爲什麼提出面向對象編程。宏用於避免語言中無法實現的重複代碼。這種情況發生在各種語言中,包括那些帶有本地OO構造的語言(特別是那些不支持高階函數的語言)。 – Warbo

0

我寫了2個不同的LP工具: TCLP - 不支持宏: http://code.google.com/p/tclp AMD NanoLP,具有非常靈活的宏支持: http://code.google.com/p/nano-lp

當我編寫TCLP時,我對宏的看法是 - 這很糟糕,因爲它破壞了程序結構,像另一個宏觀系統 - 你可以像C語言中的並行宏觀系統一樣思考它。 C宏隱藏真實代碼 - 它們不是真正的函數調用,但隱藏(像佔位符!)真正的代碼和LP宏是隱藏代碼的並行方式。這是缺點。但是如果你編寫好的LP宏,可讀性和可理解性,那麼使用它們就沒有問題,所以我將flex宏系統(包括plaeholders,導入,變量字典...)納入我的下一個工具 - NanoLP。