-
1.巨集是在編譯之前編譯的,即它們用巨集體替換巨集名稱然後編譯,而函式顯然是在編譯後和執行時呼叫的。 因此,巨集占用編譯時間,而函式在執行時需要時間。
這句話單獨解釋:
巨集在編譯前進行編譯,即先將巨集名稱替換為巨集體,然後進行編譯""
說明:假設在編譯前定義 **: define max len 10(10 是巨集體,max len 是巨集名稱),也就是說,在預編譯的時候,** 中 max len 出現的所有地方都會在下一次 **編譯之前替換為 10,這個替換工作實際上是在編譯之前進行的。
函式顯然是在編譯後呼叫的,當它們被執行時""
解釋:這在實際呼叫函式呼叫時是顯而易見的,因為只有在執行函式呼叫時,才能根據特定條件決定呼叫哪個函式。
因此,巨集占用編譯時間,而函式在執行時需要時間。 ""
解釋:有了上面的解釋,估計這句話就知道了,書的作者也會從他的句子中算作預編譯的一部分。
2.巨集引數不占用記憶體空間,因為它們只是替換字串,而呼叫函式時的引數傳遞是特定變數之間的資訊傳遞,而表單引數作為函式的區域性變數,顯然占用了記憶體。
同樣,單獨解釋:
巨集引數不占用記憶體空間,因為它們僅替換字串""
解釋:假設有乙個巨集定義定義 max(a, b) (a) >b) ?a) :
b) max(a, b) 出現在 ** 中(在初始定義之外)的所有位置都改為 (a) >b) ?a) :b),例如,如果 ** 中有類似 c = max(1, 3) 的語句,它將變為 c = (1) >3) ?
1) :3),這是直接替換,不產生中間變數,所以沒有必要為它分配空間......
呼叫函式時的引數傳遞是特定變數之間的資訊傳遞,而形式引數作為函式的區域性變數,顯然會占用記憶體。 "
說明:呼叫函式時,需要在堆疊上為每個形式引數分配空間,然後將引數的值複製到其中,並在函式內部使用此引數,函式結束後引數的空間會自動釋放,這就是為什麼引數的更改不能更改引數的值的原因。
-
巨集是直接的文字替換,例如:
#define sum(a,b) a+b
當 sum(1,2) 在編譯過程中被替換為 a+b 函式時,情況並非如此,並且在執行時會呼叫 int sum(int a, int b)。
例如,sum(1,1)*2;
這樣的巨集呼叫將替換為 1+1*2,從而得到 3
但是 sum(1,1)*2 沒有這個問題,會先呼叫函式(實際在函式編譯後執行指令)並返回 2 in 和 2 乘法。
-
[定義]:
巨集(計算機術語):
在電腦科學中,巨集是批處理的術語。 一般來說,巨集是一種規則或模式,或語法替換,它描述了如何根據預定義的規則將特定輸入(通常是字串)轉換為相應的輸出(通常是字串)。 這種替換發生在預編譯時,稱為巨集。
功能(計算機術語):
為特定目的編寫單獨的儲存小程式塊也可以稱為方法。
糾錯]:巨集就是巨集,函式就是函式,這是兩個不同的概念,一般我們只說巨集。
-
s(x) 是帶有引數的巨集。 也就是說,這裡的 s(x) 是 pt*x*x,其中 pt 等於。 然後 s(a+b) 將被替換為 pt*(a+b)*(a+b)。 即。
-
所謂巨集,簡單來說,就是為了後期程式設計的簡單性,相當於給乙個非常大的程式函式起了個名字,用的時候可以直接用到,非常方便!!
-
1. Macro(英文:macro)是批處理的術語。
2.電腦科學中的巨集是一種抽象,它根據一系列預定義的規則替換了某種文字模式。 直譯器或編譯器在遇到巨集時會自動替換此模式。 對於程式設計和翻譯語言,巨集在編譯時出現,用於執行巨集的工具通常稱為巨集。
3. 術語巨集也經常用於許多類似的上下文中,它們源自巨集的概念,其中包括鍵盤巨集和巨集語言。 絕大多數情況下,“巨集”一詞的使用意味著將乙個小命令或操作轉換為一系列指令。
-
這取決於你寫什麼。 與函式相比,巨集具有明顯的優勢,因為它比函式更有效(且更快),因為巨集可以直接位於源中,而呼叫函式需要額外的開銷。 但是,巨集通常很小,無法處理大型、複雜的結構,而函式可以。
另外,巨集需要逐行,所以每次出現巨集的時候,巨集的**都會複製一次,這樣你的程式就會變大,使用乙個函式不會讓你的程式變大。
一般來說,小的、可重複的段應該用巨集代替,這將使程式執行得更快; 當任務複雜且需要多行實現時,或者當程式要求盡可能小時,應使用函式。
dim tarold
private sub worksheet_change(byval target as range) >>>More
你能說清楚嗎,我不知道你的意思。 是否要在 main 函式中呼叫乙個函式,然後不知道如何定義被呼叫的函式? 如果是這樣的話,我可以告訴你。 >>>More