关于inline注意一下几点:
1,inline与define的区别,define只是进行简单的字符替换,并不进行数据类型安全检查,而inline却可以做到这一点。
2,inline是为了提高程序效率,inline说明对编译器来说只是一种建议,编译器可以选择忽略这个建议,代码必须短小精简,不包含for循环,switch语句等等。
3,static inline、inline和extern inline的区别。static inline是本地的,只在当前文件中可用,可以理解为static函数加上inline的属性;inline在本地被内联展开编译,在其他文件和普通的函数一样,编译器会为他生成一段独立的汇编码,以便其他的文件调用;exerten inline只会内联编译,一定不会生成汇编码,切记!看下面一个例子:
extern inline
int function(int a)
{
//.....
return 1;
}
int main()
{
int a = foo(2); //此处内联编译
ptr_fun = foo; //引用函数地址,调用外部的函数,如果没有相同名称的全局函数就会报错。
return 1;
}
所以extern inline函数允许和外部函数同名。
以上是本人的一点拙见,望各位大侠多多指点。