内联函数和宏定义

来源:互联网 发布:js打印当前时间 编辑:程序博客网 时间:2024/06/07 02:05

内联函数的定义:程序中被inline修饰符所修饰的函数。
例如:

inline int sum(int a, int b){    return a + b;}

内联函数与普通函数相比有以下几个特点:
1、被inline修饰的函数在编译阶段不会产生符号,因此inline修饰的函数不能像普通函数一样分文件写,若分文件写,会发生符号未定义错误(在链接阶段引用的符号找不到定义)。即本文件可见;
2、被inline修饰的函数在编译阶段处理,在函数的调用点将该函数的代码展开,没有函数的调用开销,可以加快程序运行的速度。
3、其只在release版本下起作用。
4、一般放在头文件中,防止被重新定义。

内联函数与宏定义的区别:
a、内联函数编译时要做类型检查,而后在将代码在函数调用点展开;而宏定义是在代码处不做任何检查的简单替换,从这点来看,内联函数更为安全。
b、inline函数是函数,但在编译时不单独产生代码,而是将有关代码嵌入到调用处;而宏定义不是一个函数只是在编译预处理阶段将有关字符串替换成宏体。

内联函数一般只用于一下情况:
1、一个函数不断被重复调用。
2、函数只有简单的几行,且函数中不包含for、while、switch语句。

原创粉丝点击