通常编译器进行优化的时候会对简短方法进行这种优化,不进行声明也会进行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; }
好处:当重复写一个变量或者是名字的时候,能够经过宏定义进行定义,手写容易出错,宏定义有编译器进行检测错误,定义方法的时候运行快,减小调用方法时的耗时。坏处:代码量增长,运行时占用的内存增大。 额外文档命令行