1. 程式人生 > >行內函數與帶引數巨集區別(筆記)

行內函數與帶引數巨集區別(筆記)

1.行內函數呼叫時,會進行型別檢查,要求實參和形參的型別一致,另外行內函數會先對實參表示式進行求值,然後傳遞給形參;

而巨集呼叫時只用實參簡單地替換形參。

2.行內函數實在編譯的時候,在呼叫的地方將程式碼展開,而巨集則是在預處理時進行替換的。

3.C++中建議採用inline函式來替換帶引數的巨集。

對內聯成員函式的補充:

即便是可以把實現在類定義體外部的成員函式定義為行內函數,那該成員函式的實現也必須寫在宣告類定義體的哪個標頭檔案(.h)中,不能違反規則;

即:行內函數的定義和實現都必須在同一個頭(.h)檔案中;

相關推薦

引數巨集區別筆記

1.行內函數呼叫時,會進行型別檢查,要求實參和形參的型別一致,另外行內函數會先對實參表示式進行求值,然後傳遞給形參;而巨集呼叫時只用實參簡單地替換形參。 2.行內函數實在編譯的時候,在呼叫的地方將程式碼展開,而巨集則是在預處理時進行替換的。 3.C++中建議採用inli

C語言 inline巨集

C語言 inline行內函數與帶參巨集 一、簡述         簡單的介紹inline行內函數、帶參巨集的作用。 二、函式的執行與呼叫         函式執行:會將之前的棧的頂,棧基址壓棧,並在棧中開

和預處理巨集區別

行內函數的功能和預處理巨集的功能相似。相信大家都用過預處理巨集,我們會經常定義一些巨集,如 #define TABLE_COMP(x) ((x)>0?(x):0) 就定義了一個巨集。 為什麼要使用巨集呢?因為函式的呼叫必須要將程式執行的順序轉移到函式 所存放

個人C++速成筆記1 -- C++C不一樣的地方:、預設引數、函式過載、函式模板、庫函式的呼叫

之前學過C,現在想稍微學習下C++,由於上班,只能利用平時的空閒時間學習,記錄一下學習歷程,激勵自己有始有終,部落格內容主要記錄C與C++不同的地方。                    

巨集的差別

C++程式語言 巨集是內聯程式碼的原始實現。 #define SQUARE(X) X*X 這並不是以傳遞引數實現的,而是通過文字替代實現的--X是“引數”的符號標記。 在標準C中,傳遞引數主要有2種方式:1.按值傳遞;2.按指標傳遞 在C++中,新增了一種與指標傳遞非常類

巨集的簡單說明

1. c 語言中的巨集 c語言使用預處理語句#define來實現巨集定義,例如一個計算平方的巨集: #define square_mine(x) x*x 需要說明的是,巨集並不是通過傳遞引數實現的,而是通過文字替換來實現。 看下面的例子: #in

C++ 普通巨集區別

巨集的使用:    因為函式的呼叫必須要將程式執行的順序轉移到函式所存放在記憶體中的某個地址,將函式的程式內容執行完後,再返回到轉去執行該函式前的地方。這種轉移操作要求在轉去執行前要儲存現場並記憶執行的地址,轉回後要恢復現場,並按原來儲存地址繼續執行。因此,函式呼叫要有一定

巨集區別

 行內函數是程式碼被插入到呼叫者程式碼處的函式。如同 #define 巨集,行內函數通過避免被呼叫的開銷來提高執行效率,尤其是它能夠通過呼叫(“過程化整合”)被編譯器優化。      內 聯函式和巨集很類似,而區別在於,巨集是由前處理器對巨集進行替代,而行內函數是通過編譯器控

巨集函式的區別

行內函數 概念 以inline修飾的函式叫做行內函數,編譯時C++編譯器會在呼叫行內函數的地方展開,沒有函式壓棧的開銷,行內函數提升程式執行的效率 特性 inline

巨集、普通函式的區別

行內函數是程式碼被插入到呼叫者程式碼處的函式。如同 #define 巨集,行內函數通過避免被呼叫的開銷來提高執行效率,尤其是它能夠通過呼叫(“過程化整合”)被編譯器優化。     行內函數和巨集很類似,而區別在於,巨集是由前處理器對巨集進行替代,而行內函數是通過編譯器控制來實現的。而且行內函數是真正的函式,只

inline 詳解 巨集定義的區別

一、在C&C++中   一、inline 關鍵字用來定義一個類的行內函數,引入它的主要原因是用它替代C中表達式形式的巨集定義。   表示式形式的巨集定義一例:   #define ExpressionName(Var1,Var2) ((Var1)+(Var2))*(

巨集

求兩個整數和的巨集 #define Sum(nNoA,nNoB)((nNoA)+(nNoB)) 巨集在預處理時把巨集程式碼展開,不需要類似函式似的儲存現場和恢復現場,執行效率而言更高。這也是C語言中大量使用巨集的原理。 巨集也有兩面性,如巨集不能訪問物件的私有成員;容易引起

c++巨集區別

c++行內函數 c++行內函數與常規函式的主要區別不在於編寫方式的不同。在於c++編譯器如何將它們組合到程式中。 執行到函式呼叫指令時,程式將立即儲存該指令的記憶體地址,變將函式複製到堆疊,跳到標記函式起點 的記憶體單元,執行函式程式碼,函式體執行完後跳到地址被儲存的指令處

C/C++之巨集和普通函式的區別

轉載:https://www.cnblogs.com/ht-927/p/4726570.html C/C++之巨集、行內函數和普通函式的區別 行內函數的執行過程與帶引數巨集定義很相似,但引數的處理不同。帶引數的巨集定義並不對引數進行運算,而是直接替換;行內函數首先是函式,這就意味著函式的很多

C++中的,預設引數和佔位引數

說明:裡面的示例程式碼有些被註釋掉了,想執行時要去掉註釋 #include "iostream" using namespace std; /**      內聯函數出現的原因:     C++中的const常量可以替代巨

普通函式有什麼區別

轉載 2007年12月25日 14:32:00 xiaoyan_cug 閱讀數:796  行內函數和普通函式相比可以加快程式的執行的速度,因為在呼叫行內函數時,不需要中斷,在編譯的時候直接將行內函數鑲嵌到目的碼中。內聯是以增加空間消耗為代價,換取時間開銷。巨集只是一種簡單

C++預設形參值的函式

#include<iostream>#include<iomanip>using namespace std;int getVolume(int length,int width=2,int height=3);int main(){const int X=10,Y=12,Z=15;c

C的內外連結的區別

1.行內函數的內連結如inline static void fn(void) {} 沒有任何限制(建議使用) 2.行內函數的外連結如inline void fn(void) {} 則有諸多限制,最易被忽略的便是行內函數的外連結的定義(不僅需要.h檔案的替換體,還需要單獨的.c檔案存放extern&

引數巨集函式、區別

含引數的巨集與函式的區別 1、巨集替換不佔執行時間,只佔編譯時間;而函式呼叫則佔執行時間(分配單元、保留現場、值傳遞、返回),每次執行都要載入,所以執行起來比較慢一些。 2、 定義巨集的時候不要在巨集及其引數之間鍵入空格,因為巨集替換的時候會把你不經意打的空格當作巨集的一部分進去

巨集

**巨集可以帶引數(引數是形參),稱為帶參巨集。**巨集和函式各有千秋,各有優劣。總的來說,如果程式碼比較多用函式適合而且不影響效率;但是對於那些只有一兩句話的函式開銷就太大了,適合用帶參巨集。但是用帶參巨集又有缺點:不檢查引數型別。 示例:MAX巨集,三目運算子求2個數中較大的一個 #