通常編譯器進行優化的時候會對簡短方法進行這種優化,不進行聲明也會進行inline,若是顯示的聲明爲inline,會增大最後代碼的大小。最終是否優化由編譯器決定,這樣聲明瞭能夠在頭文件中定義,不用擔憂重複定義。html
注意,對於
include
方式進行包含的沒有影響。include
實際是對整個文件進行包含。這個通常是對於庫與庫,或者.o
與.o
之間,可見範圍由編譯器進行分隔。優化
和static 有些相似,也是使用於模塊與模塊之間的。ui
g++ -E source.cpp
的方式查看替換後的代碼。 /* [root@localhost definecompile]# g++ -E test.cpp # 1 "test.cpp" # 1 "<built-in>" # 1 "<命令行>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 1 "<命令行>" 2 # 1 "test.cpp" */ int main() { int ss = 0; ss+=1; return 0; } //[root@localhost definecompile]# cat test.cpp #define SS(a) a+=1 int main() { int ss = 0; SS(ss); return 0; }
好處:當重複寫一個變量或者是名字的時候,能夠經過宏定義進行定義,手寫容易出錯,宏定義有編譯器進行檢測錯誤,定義方法的時候運行快,減小調用方法時的耗時。壞處:代碼量增長,運行時佔用的內存增大。 額外文檔命令行