WIKI使用導航
站長百科導航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應用
- 美國十大主機
宏
宏是一種抽象(Abstraction),它根據(jù)一系列預定義的規(guī)則替換一定的文本模式。解釋器或編譯器在遇到宏時會自動進行這一模式替換。對于編譯語言,宏展開在編譯時發(fā)生,進行宏展開的工具常被稱為宏展開器。
宏這一術(shù)語也常常被用于許多類似的環(huán)境中,它們是源自宏展開的概念,這包括鍵盤宏和宏語言。絕大多數(shù)情況下,“宏”這個詞的使用暗示著將小命令或動作轉(zhuǎn)化為一系列指令。
簡介[ ]
宏的用途在于自動化頻繁使用的串行或者是獲得一種更強大的抽象能力——但這常常是一回事。
計算機語言如 C語言 或匯編語言有簡單的宏系統(tǒng),由編譯器或匯編器的預處理器實現(xiàn)。C的宏預處理器的工作只是簡單的文本搜索和替換,使用附加的文本處理語言如M4,C程序員可以獲得更精巧的宏。
Lisp類語言如Common Lisp和Scheme有更精巧的宏系統(tǒng): 宏的行為如同是函數(shù)對自身程序文本的變形,并且可以應用全部語言來表達這種變形。一個 C 宏可以定義一段語法的替換,然而一個 Lisp 的宏卻可以控制一節(jié)代碼的計算。
獲得了控制代碼的執(zhí)行順序(見惰性計算和非限制函數(shù))的能力,使得新創(chuàng)建的語法結(jié)構(gòu)與語言內(nèi)建的語法結(jié)構(gòu)不可區(qū)分。例如,一種 Lisp 方言有 cond 而沒有 if ,就可以使用宏由前者定義后者。Lisp 語法的去部主要擴展,比如宏編程[ ]
在用一種不熟悉的宏語言進行宏編程時,可以這樣做,首先記錄下用戶想要宏完成什么,然后打開宏文件并嘗試理解命令結(jié)構(gòu)如何工作。也可以修改命令以調(diào)整宏。一些宏語言,比如Great Plains會計軟件的 Dexterity 運行時引擎,不能從其它數(shù)據(jù)源(如由逗號分隔的文本文件)導入數(shù)據(jù)。
這一限制可以通過用更強大的編程語言,如 VBA 來創(chuàng)建一個計算機程序在此弱編程語言里生成一個特別的宏來解決。例如,可以對 Microsoft Excel 宏編程從擴展樣式表或文本文件中讀取數(shù)據(jù)并創(chuàng)建 Great Plains .mac 文件,這一文件被用于將特定的數(shù)據(jù)導入 Great Plains. 需要針對每一個新的數(shù)據(jù)集合生成新的 .mac 文件。
應用程序也可以使用一種和宏類似機理的系統(tǒng)來允許用戶將一系列(一般是最常使用到的操作)自定義為一個步驟。也就是用戶執(zhí)行一系列操作,并且讓應用程序來“記住”這些操作以及順序。更高級的用戶可以通過內(nèi)建的宏編程來來直接使用那些應用程序的功能。
當使用一種不熟悉的宏語言來編程時,比較有效的方法就是記錄一連串用戶希望得到的操作,然后通過閱讀應用程序記錄下來的宏文件來理解宏命令的結(jié)構(gòu)組成。
鍵盤宏和編輯器宏分別在圖形用戶界面和編輯器中被交互式地使用。使用它們可以用簡短的擊鍵代替冗長的命令串行,并為重復性任務提供了一個簡單的自動化形式。
程序員的文本編輯器 Emacs (“編輯宏”[Editing MACroS]的簡稱)是沿用這一思想的產(chǎn)物。事實上,大多數(shù)編輯器是由宏組成的。Emacs 最初被設計為編輯語言 TECO 的宏集,后被移植為 Lisp 的一種方言 Emacs Lisp。
宏語言是一類編程語言,其全部或多數(shù)計算是由擴展宏完成的。宏語言并未在通用編程中廣泛使用,但在文本處理程序中應用普遍。例如,
Visual Basic for Applications (VBA),是 Microsoft Office 里的一種編程語言. 但由上面的定義,它完全不是一種宏語言。然而,它的功能已經(jīng)從中發(fā)展并最終替代了用戶應用程序的宏思想,所以它被廣泛地錯誤地稱為是一種宏語言。
VBA 可以訪問許多操作系統(tǒng)函數(shù)并支持文檔打開時自動執(zhí)行宏。這使得用這種語言寫計算機病毒成為可能。1990年代中后期,宏病毒成為了最流行的計算機病毒類型之一。其它的包括宏語言的項目,如openoffice.org,故意從其宏語言中排除了一些功能(如:自動執(zhí)行)以避免破壞程序。然而,這一特性在很多事務中受到歡迎。
宏應用[ ]
應用方式[ ]
鍵盤宏[ ]
宏語言[ ]
微軟Word和宏病毒[ ]
相關(guān)條目[ ]
參考來源[ ]