宏定義

宏定義

(Macro),是一種批量處理的稱謂。計算機科學里的宏是一種抽象(Abstraction),它根據一系列預定義的規則替換一定的文本模式。解釋器編譯器在遇到宏時會自動進行這一模式替換。對於編譯語言,宏展開在編譯時發生,進行宏展開的工具常被稱為宏展開器。宏這一術語也常常被用於許多類似的環境中,它們是源自宏展開的概念,這包括鍵盤宏和宏語言。絕大多數情況下,“宏”這個詞的使用暗示著將小命令或動作轉化為一系列指令。

基本介紹

  • 中文名:宏定義
  • 外文名:macro definition
  • 格式#define  標識符   字元串
  • 歸屬門類:計算機C語言
  • 功能:預處理功能
  • 別名:宏代換
簡介,宏編程,宏套用,鍵盤宏,宏語言,微軟Word和宏病毒,參見,

簡介

(Macro),是一種批量處理的稱謂。
計算機科學里的宏是一種抽象(Abstraction),它根據一系列預定義的規則替換一定的文本模式。解釋器編譯器在遇到宏時會自動進行這一模式替換。對於編譯語言,宏展開在編譯時發生,進行宏展開的工具常被稱為宏展開器。宏這一術語也常常被用於許多類似的環境中,它們是源自宏展開的概念,這包括鍵盤宏和宏語言。絕大多數情況下,“宏”這個詞的使用暗示著將小命令或動作轉化為一系列指令。
宏的用途在於自動化頻繁使用的序列或者是獲得一種更強大的抽象能力。
計算機語言如C語言彙編語言有簡單的宏系統,由編譯器彙編器的預處理器實現。C語言的宏預處理器的工作只是簡單的文本搜尋和替換,使用附加的文本處理語言如M4,C程式設計師可以獲得更精巧的宏。
Lisp類語言如Common LispScheme有更精巧的宏系統:宏的行為如同是函式對自身程式文本的變形,並且可以套用全部語言來表達這種變形。一個C宏可以定義一段語法的替換,然而一個Lisp的宏卻可以控制一節代碼的計算。
獲得了控制代碼的執行順序(見惰性計算和非限制函式)的能力,使得新創建的語法結構與語言內建的語法結構不可區分。例如,一種Lisp方言有cond而沒有if,就可以使用宏由前者定義後者。Lisp語法的去部主要擴展,比如面向對象的CLOS系統,可以由宏來定義。
MacroML有型別語法宏,一種有效的理解方式是把這種語法宏看作是多階段計算。

宏編程

在用一種不熟悉的宏語言進行宏編程時,可以這樣做,首先記錄下用戶想要宏完成什麼,然後打開宏檔案並嘗試理解命令結構如何工作。也可以修改命令以調整宏。一些宏語言,比如Great Plains會計軟體的Dexterity運行時引擎,不能從其它數據源(如由逗號分隔的文本檔案)導入數據。這一限制可以通過用更強大的程式語言,如VBA來創建一個電腦程式在此弱程式語言里生成一個特別的宏來解決。例如,可以對Microsoft Excel宏編程從擴展樣式表或文本檔案中讀取數據並創建Great Plains .mac檔案,這一檔案被用於將特定的數據導入Great Plains.需要針對每一個新的數據集合生成新的.mac檔案。

宏套用

應用程式也可以使用一種和宏類似機理的系統來允許用戶將一系列(一般是最常使用到的操作)自定義為一個步驟。也就是用戶執行一系列操作,並且讓應用程式來“記住”這些操作以及順序。更高級的用戶可以通過內建的宏編程來直接使用那些應用程式的功能。
當使用一種不熟悉的宏語言來編程時,比較有效的方法就是記錄一連串用戶希望得到的操作,然後通過閱讀應用程式記錄下來的宏檔案來理解宏命令的結構組成。

鍵盤宏

鍵盤宏和編輯器宏分別在圖形用戶界面和編輯器中被互動式地使用。使用它們可以用簡短的擊鍵代替冗長的命令序列,並為重複性任務提供了一個簡單的自動化形式,但2009年已經有所改變。
程式設計師的文本編輯器Emacs(“編輯宏”[Editing MACroS]的簡稱)是沿用這一思想的產物。事實上,大多數編輯器是由宏組成的。Emacs最初被設計為編輯語言TECO的宏集,後被移植為Lisp的一種方言Emacs Lisp。Vim也允許用戶錄製和播放簡單的鍵盤宏。

宏語言

宏語言是一類程式語言,其全部或多數計算是由擴展宏完成的。宏語言並未在通用編程中廣泛使用,但在文本處理程式中套用普遍。例如,
  • C預處理器
  • Internet Macros(iOpus)
  • M4(如前所述,源於AT&T,捆綁於Unix

微軟Word和宏病毒

主條目:Visual Basic for Applications和宏病毒
VisualBasic forApplications(VBA),是Microsoft Office里的一種程式語言。但由上面的定義,它完全不是一種宏語言。然而,它的功能已經從中發展並最終替代了用戶應用程式的宏思想,所以它被廣泛地錯誤地稱為是一種宏語言。
VBA可以訪問許多作業系統函式並支持文檔打開時自動執行宏。這使得用這種語言寫計算機病毒成為可能。1990年代中後期,宏病毒成為了最流行的計算機病毒類型之一。其它的包括宏語言的項目,如OpenOffice.org,故意從其宏語言中排除了一些功能(如:自動執行)以避免破壞程式。然而,這一特性在很多事務中受到歡迎。

參見

  • 計算機科學主題
  • 電腦程式設計主題
  • 腳本語言TclECMAScript(即:ActionScriptDMDScriptJavaScriptJScript)已被嵌入應用程式,所以它們的運行類似宏。
  • VisualBasicScript(Microsoft)
  • Lisp有一個強大而不整潔的宏語法,可能會產生變數同名捕捉的問題。(Lisp has a powerful system of unhygenic syntax macros, but is prone to variable capture.)
  • Scheme有整潔的宏語法,可能是常被使用的最高級的無型別的宏系統
  • MacroML是一個探尋靜態型別和宏系統和諧點的實驗系統。
  • 通用目的宏處理器是一個上下文模式匹配宏處理器,可以說他是正則表達式EBNFawk的組合。

相關詞條

熱門詞條

聯絡我們