Chinaunix首页 | 论坛 | 博客
  • 博客访问: 63519
  • 博文数量: 11
  • 博客积分: 184
  • 博客等级: 入伍新兵
  • 技术积分: 120
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-22 19:34
文章分类
文章存档

2013年(5)

2012年(6)

我的朋友

分类: C/C++

2012-07-26 09:47:50

今天看到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类型
阅读(5733) | 评论(0) | 转发(0) |
0

上一篇:mac80211

下一篇:通信协议之序列化

给主人留下些什么吧!~~