C语言中的宏定义与内联函数

宏定义


宏定义的分类


变量式宏定义:#define N 20

函数式宏定义:#define MAX(a, b) ((a) > (b) ? (a):(b))


函数式宏定义与真正的函数的区别


1. 函数式宏定义参数没有类型,不做类型检查

2. 函数式宏定义编译生成的目标文件比较大


函数式宏定义的优点


1. 可以省去分配和释放栈帧、传参、传返回值等,提高代码的执行效率



内联函数inline


inline概念


1. C99引入的关键字inline,用于定义内联函数

2. inline告诉编译器,函数的调用要尽可能快,可以当普通函数调用,也可以用宏展开


inline的优缺点


优点:省去函数调用的开销,提高效率

缺点:过度使用inline函数,会造成程序文件变大,性能降低


你可能感兴趣的:(宏,内联)