一、**長度
1、每次使用時,巨集**都被插入到程式中。除了非常小的巨集之外,程式的長度將大幅度增長。
2、函式**只出現於乙個地方,每次使用這個函式時,都呼叫那個地方的同乙份**。
二、執行速度
1、#define 巨集 更快。
2、函式存在函式呼叫或返回的額外開銷。
三、操作符優先順序
1、巨集引數的求值是在所有週期表示式的上下文環境裡,除非他們加上括號,否則臨近操作符的優先順序可能會產生不可預料的結果。
2、函式引數只在函式呼叫時求值一次,它的結果值傳遞給函式,表示式的求值結果更容易**。
四、引數求值
1、引數每次用於巨集定義時,他們都將重新求值,由於多次求值,具有***的引數可能會產生不可預料的結果。
2、引數在函式被呼叫前只求值一次,在函式中多次使用引數並不會導致多種求值過程,引數的***並不會造成任何特殊的問題。
五、引數型別
1、巨集與型別無關,只要對引數的操作是合法的,它可以使用於任何引數型別。
2、函式的引數是與型別有關的,如果引數的型別不同,就需要使用不同的函式,即使它們執行的任務是相同的。
C語言 巨集和函式的區別
1,巨集 巨集定義將乙個識別符號 定義為乙個字串,源程式 中的該識別符號均以指定的字串來代替。巨集的書寫形式 define 巨集名 參數列 巨集體 2,函式 函式有庫函式和自己編寫的函式,庫函式是用來定義一些經常用的大家都知道的函式,自定義的函式是大家為了實現一些功能來自己編寫的函式 3,巨集和函式...
C語言巨集和函式的區別
首先巨集的使用 有標準巨集和巨集函式 標準巨集就是將乙個大寫字母或單詞定義成不可改變的常量,使用時直接文字替換,如 define n 1000巨集函式是將乙個函式簡化為大寫的字母或單詞,多次使用時會很方便。要注意的是巨集函式裡邊,表示式和引數都要帶上圓括號,否則可能會出現由於優先順序或求值順序而導致...
在c語言中巨集和函式的區別
關於c語言中的巨集,自己來總結一下。簡單來說,巨集就是在c語言中簡單的文字替換,這是簡單的理解,嚴格的說不是很準確,因為在巨集中存在乙個文字條件編譯,所以有一定的判斷,巨集是在c語言中的預處理階段就已經處理完成。函式呢,就要分為兩種了。第一種封裝成庫。如果函式在動態庫中,那麼呼叫就是在函式執行階段 ...