今天看到linux中list.h中的函数定义都是以
“static inline”
开头的。突然就有了疑问,为什么inline函数要添加static呢?
测试:
测试文件:
1、list.h:定义了void foo(void) inline函数
2、src.cpp:包含了list.h头文件,并且有对foo函数的调用
3、main.cpp:不包含list.h头文件;但声明了void foo(void)原型;
测试结果:
1、如果list.h中对foo的定义,没有使用static,则链接成功
2、如果
list.h中对foo的定义,使用了static ,则连接出错
结论:
1、如果inline函数没有使用static关键字,则函数可以通过extern而不用包含声明inline函数的头文件就可以实现对inline函数的调用,这有时候可能是错误的,但链接器却不会给出错误哪怕是警告;
2、inline函数最好声明为static类型
阅读(5781) | 评论(0) | 转发(0) |