|
macro的中文名稱:宏
, P* o; f$ ]( W. a+ O# P4 A# [1 C' @8 t什么是宏$ M: G$ x$ |$ ]# e1 X
計(jì)算機(jī)科學(xué)里的宏是一種抽象,,它根據(jù)一系列預(yù)定義的規(guī)則替換一定的文本模式。Excel 辦公軟件自動(dòng)集成了“VBA”高級(jí)程序語(yǔ)言,,用此語(yǔ)言編制出的程序就叫“宏”,。使用“VBA”需要有一定的編程基礎(chǔ)和耗費(fèi)大量的時(shí)間,因此,,絕大多數(shù)的使用者僅使用了Excel的一般制表功能,,很少使用到“VBA”。 7 `/ P) G2 q# V: a
' }! i+ z# |+ u 解釋器或編譯器在遇到宏時(shí)會(huì)自動(dòng)進(jìn)行這一模式替換,。對(duì)于編譯語(yǔ)言,,宏展開在編譯時(shí)發(fā)生,,進(jìn)行宏展開的工具常被稱為宏展開器,。宏這一術(shù)語(yǔ)也常常被用于許多類似的環(huán)境中,它們是源自宏展開的概念,,這包括鍵盤宏和宏語(yǔ)言,。絕大多數(shù)情況下,使用“宏”這個(gè)詞的使用暗示著將小命令或動(dòng)作轉(zhuǎn)化為一系列指令,。 7 S$ H. Q) [, I/ ]: h* t
7 p& z( Q8 Z& \4 J2 z ^. d
宏的用途在于自動(dòng)化頻繁使用的序列或者是獲得一種更強(qiáng)大的抽象能力--但這常常是一回事,。
8 U3 l. P8 ?1 C6 K4 m! B
( o3 K* g9 z2 A( J 計(jì)算機(jī)語(yǔ)言如C或匯編語(yǔ)言有簡(jiǎn)單的宏系統(tǒng),由編譯器或匯編器的預(yù)處理器實(shí)現(xiàn),。C的宏預(yù)處理器的工作只是簡(jiǎn)單的文本搜索和替換,,使用附加的文本處理語(yǔ)言如M4,C程序員可以獲得更精巧的宏。 * t g) J0 V5 R3 r2 v: s% r, O# D
2 S: t% _9 Z" M' p+ Q
Lisp類語(yǔ)言如Common Lisp和Scheme有更精巧的宏系統(tǒng): 宏的行為如同是函數(shù)對(duì)自身程序文本的變形,,并且可以應(yīng)用全部語(yǔ)言來(lái)表達(dá)這種變形,。一個(gè)C宏可以定義一段語(yǔ)法的替換,然而一個(gè)Lisp的宏卻可以控制一節(jié)代碼的計(jì)算,。
# s& [4 }/ y9 r
+ K' S" D& t g7 q8 D 獲得了控制代碼的執(zhí)行順序(見惰性計(jì)算和非限制函數(shù))的能力,,使得新創(chuàng)建的語(yǔ)法結(jié)構(gòu)與語(yǔ)言內(nèi)建的語(yǔ)法結(jié)構(gòu)不可區(qū)分。例如,,一種Lisp 方言有 cond 而沒有if ,,就可以使用宏由前者定義后者。Lisp 語(yǔ)法的去部主要擴(kuò)展,,比如面向?qū)ο蟮腃LOS 系統(tǒng),,可以由宏來(lái)定義。
' F8 ]' ?( [# b宏的典型應(yīng)用
+ V! y$ j* j. ]& ] 加速日常編輯和格式設(shè)置
9 V* |' q/ E" e
: | R7 F2 g9 z( S) [0 i5 z' w- s 組合多個(gè)命令
: H1 v4 X4 {6 e
! M: l5 Y* k, T 使對(duì)話框中的選項(xiàng)更易于訪問(wèn)
* l7 S( c, }7 ?& v! L! F) g, |' ~* R
使一系列復(fù)雜的任務(wù)自動(dòng)執(zhí)行
* M8 R1 d9 I8 \! G$ Z宏編程介紹3 w9 t* R C) W/ W" y: e+ d
在用一種不熟悉的宏語(yǔ)言進(jìn)行宏編程時(shí),,可以這樣做,,首先記錄下用戶想要宏完成什么,然后打開宏文件并嘗試?yán)斫饷罱Y(jié)構(gòu)如何工作,。也可以修改命令以調(diào)整宏,。一些宏語(yǔ)言,比如Great Plains賬務(wù)(,?accounting)軟件的 Dexterity 運(yùn)行時(shí)引擎,,不能從其它數(shù)據(jù)源(如由逗號(hào)分隔的文本文件)導(dǎo)入數(shù)據(jù)。這一限制可以通過(guò)用更強(qiáng)大的編程語(yǔ)言,,如 VBA 來(lái)創(chuàng)建一個(gè)計(jì)算機(jī)程序在此弱編程語(yǔ)言里生成一個(gè)特別的宏來(lái)解決,。例如,可以對(duì) Microsoft Excel 宏編程從擴(kuò)展樣式表或文本文件中讀取數(shù)據(jù)并創(chuàng)建 Great Plains .mac 文件,,這一文件被用于將特定的數(shù)據(jù)導(dǎo)入 Great Plains. 需要針對(duì)每一個(gè)新的數(shù)據(jù)集合聲稱新的 .mac 文件,。 `& d' e& f, U+ _
鍵盤宏
i0 Y! X1 D0 ~& D 鍵盤宏和編輯器宏分別在圖形用戶界面和編輯器中被交互式地使用。使用它們可以用簡(jiǎn)短的擊鍵代替冗長(zhǎng)的命令序列,,并為重復(fù)性任務(wù)提供了一個(gè)簡(jiǎn)單的自動(dòng)化形式,。
" E+ w" S/ b/ s& j) u6 v2 _1 s$ Q. y- R2 J8 y: C7 |
程序員的文本編輯器 Emacs (“編輯宏”[Editing MACroS]的簡(jiǎn)稱)是沿用這一思想的產(chǎn)物。事實(shí)上,,大多數(shù)編輯器是由宏組成的,Emacs 最初被設(shè)計(jì)為編輯語(yǔ)言 TECO 的宏集,,后被移植為 Lisp 的一中方言 Emacs Lisp。
" g- Y# ~; ]- [' K3 U# O. n宏語(yǔ)言, y. C" z! d6 I: U6 ?+ D
宏語(yǔ)言是一類編程語(yǔ)言,,其全部或多數(shù)計(jì)算是由擴(kuò)展宏完成的,。宏語(yǔ)言并未在通用編程中廣泛使用,但在文本處理程序中應(yīng)用普遍,。例如,,
3 c6 V+ Q5 H( ^- i9 f# j( Z! e6 {( a9 c# e
C preprocessor C 預(yù)處理器
2 F4 J! y1 w9 \/ d3 R
9 Z7 O5 Y7 ]3 T+ a' q6 A* f Internet Macros(iOpus) ! |( T- C; `: U5 w
3 c7 y3 v* c v0 R& D. X! y M4(如前所述,,源于AT&T,捆綁于Unix)
& G7 r" W9 K( B" Z9 n& s) h% h1 s! y- t G% @& w
宏定義 7 u5 r: f! u, o, S
% N N& S# v( M: e
c程序提供的預(yù)處理功能之一,。包括帶參數(shù)的宏定義和不帶參數(shù)的宏定義,。具體是指用一個(gè)指定的標(biāo)志符來(lái)進(jìn)行簡(jiǎn)單的字符串替換或者進(jìn)行闡述替換。形式為:
2 Y. q9 n4 T1 W# D
/ ^* ~9 W& U. O #define標(biāo)志符(參數(shù)表) 字符串
0 d7 t! B4 b. o' Y9 Y5 [* J! k' [/ M: O( V8 V2 [: S/ p: X
宏名 % Q4 \+ q" L% i& @4 [! Y$ _. E
5 m& v7 P7 o/ d" J 在上定義中的標(biāo)志符被稱為“宏名”,。
w+ M0 p- v9 G; P3 h2 o9 \
- u$ S* o6 d% M6 C8 {8 _. p 宏展開 ( E( H# f6 @& W* b! y% G3 i9 V
/ a& Q4 J% b3 k6 V0 L* P! c 在c程序編譯時(shí)將宏名替換成字符串的過(guò)程稱為“宏展開”,。4 L1 k+ U& c# f( v/ r
微軟Word和宏病毒
- ^0 h2 _! u6 z8 F. C4 ^ Visual Basic for Applications (VBA),是 Microsoft Office 里的一種編程語(yǔ)言. 但由上面的定義,,它完全不是一種宏語(yǔ)言,。然而,它的功能已經(jīng)從中發(fā)展并最終替代了用戶應(yīng)用程序的宏思想,,所以他被廣泛地錯(cuò)誤地稱為是一種宏語(yǔ)言,。 5 f4 Z- Y% c( |4 ~$ J, j
3 @( W. t! C+ G, j
VBA 可以訪問(wèn)許多操作系統(tǒng)函數(shù)并支持文檔打開時(shí)自動(dòng)執(zhí)行宏。這使得用這種語(yǔ)言寫計(jì)算機(jī)病毒成為可能,。1990年代中后期,,宏病毒成為了最流行的計(jì)算機(jī)病毒類型之一。其它的包括宏語(yǔ)言的項(xiàng)目,,如openoffice org,,故意從其宏語(yǔ)言中排除了一些功能(如:自動(dòng)執(zhí)行)以避免破壞程序。然而,,這一特性在很多事務(wù)中受到歡迎,。
# A4 X, y3 ]5 V, L5 r+ H! e/ K. s4 x& O: M: g7 w" b
另:在數(shù)碼相機(jī)鏡頭中Marco的意思是微距。
8 p/ @3 w8 h# Z9 J) ]8 p' g2 U
/ x6 W' I; e) s; Z3 M" `' I# g詞典所得,,原來(lái)都能跟宏有關(guān),! |
評(píng)分
-
查看全部評(píng)分
|