macro

計算機科學裡的宏是一種抽象,它根據一系列預定義的規則替換一定的文本模式。

基本介紹

  • 中文名:宏
  • 外文名:Macro
  • 所屬:計算機科學
  • 屬性:一種抽象
  • 依據:一系列預定義的規則
宏,什麼是宏,典型套用,編程介紹,鍵盤宏,宏語言,VBA,

什麼是宏

Excel 辦公軟體自動集成了“VBA”高級程式語言,用此語言編制出的程式就叫“宏”。使用“VBA”需要有一定的編程基礎和耗費大量的時間,因此,絕大多數的使用者僅使用了Excel的一般制表功能,很少使用到“VBA”。
解釋器編譯器在遇到宏時會自動進行這一模式替換。對於編譯語言,宏展開在編譯時發生,進行宏展開的工具常被稱為宏展開器。宏這一術語也常常被用於許多類似的環境中,它們是源自宏展開的概念,這包括鍵盤宏和宏語言。絕大多數情況下,使用“宏”這個詞的使用暗示著將小命令或動作轉化為一系列指令。
宏的用途在於自動化頻繁使用的序列或者是獲得一種更強大的抽象能力--但這常常是一回事。
計算機語言如C或彙編語言有簡單的宏系統,由編譯器彙編器預處理器實現。C的宏預處理器的工作只是簡單的文本搜尋和替換,使用附加的文本處理語言如M4,C程式設計師可以獲得更精巧的宏。
Lisp類語言如Common Lisp和Scheme有更精巧的宏系統: 宏的行為如同是函式對自身程式文本的變形,並且可以套用全部語言來表達這種變形。一個C宏可以定義一段語法的替換,然而一個Lisp的宏卻可以控制一節代碼的計算。
獲得了控制代碼的執行順序(見惰性計算和非限制函式)的能力,使得新創建的語法結構與語言內建的語法結構不可區分。例如,一種Lisp 方言有 cond 而沒有if ,就可以使用宏由前者定義後者。Lisp 語法的去部主要擴展,比如面向對象的CLOS 系統,可以由宏來定義。

典型套用

加速日常編輯和格式設定
組合多個命令
使對話框中的選項更易於訪問
使一系列複雜的任務自動執行
避免函式館的嵌套調用,例如:主程式中include了A庫和B庫,同時B庫中include了A庫,多次調用同一個庫會造成資源浪費。此時A庫中可以#define一個宏,並且在每次編譯A庫時都用#ifndef或#ifdef語句檢測這個宏是否已經被定義,從而避免重複引用同一個庫。

編程介紹

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

鍵盤宏

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

宏語言

宏語言是一類程式語言,其全部或多數計算是由擴展宏完成的。宏語言並未在通用編程中廣泛使用,但在文本處理程式中套用普遍。例如,
C preprocessor C 預處理器
Internet Macros(iOpus)
M4(如前所述,源於AT&T,捆綁於Unix)
c程式提供的預處理功能之一。包括帶參數的宏定義和不帶參數的宏定義。具體是指用一個指定的標誌符來進行簡單的字元串替換或者進行闡述替換。形式為:
#define標誌符(參數表) 字元串
另一種宏定義的方法為:
#define 字元串
例如:c++庫 yvals_core.h 中:
#define _NODISCARD
這一類的宏在編譯宏展開時會將這些字元串替換成“”,也就是空字元,替換後沒有實際作用。
宏名
在上定義中的標誌符被稱為“宏名”。
宏展開
在c程式編譯時將宏名替換成字元串的過程稱為“宏展開”。

VBA

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

相關詞條

熱門詞條

聯絡我們