.inl是什么文件



*.inl文件是内联函数的源文件,通常内联函数在C++头文件中实现,但有时为了考虑将其实现与头文件分离,故意在另一文件中实现,通常它在声明内联函数的头文件的末尾被#include语句包含进来。

由此也可以看到inl文件的例外一个用法的影子——模板函数、模板类的定义代码的存放。对于比较大的工程来说,出于管理方面的考虑,模板函数、模板类的声明部分一般存放在一个或少数几个文件中,而将其定义部分存放在inl文件中,然后在相应的头文件中包含进来。

简单框架如下:
// .h文件

template<class T1,class T2>

class CTemplateClass

{

public:

CTemplateClass();

virtual ~CTemplateClass();

BOOL getInfo(CStringArray& userBaseInfoAry);

};

// .inl文件

template<class T1,class T2>

CTemplateClass<T1,T2>::CTemplateClass()

{

}

template<class T1,class T2>

CTemplateClass<T1,T2>::~CTemplateClass()

{

}

template<class T1,class T2>

BOOL CTemplateClass<T1,T2>::getInfo(CStringArray& userBaseInfoAry)

{

T1 arg1;

T2 arg2;

return TRUE;

}

【规则】

你可以在后缀为-inl.h的头文件中定义比较复杂的内联函数。

【详解】

原则上,内联函数的定义应该放在头文件中,以便编译器能够在内联函数调用时直接展开代码。然而,按照.h文件和.cpp/.cc文件的作用区分,又应该将函数的定义放在.cpp/.cc文件中才对。如何是好呢?

如果明确可以增强可读性,或者确认可以提高性能的话,是可以把内敛函数的定义直接放在头文件中的,比如私有变量的Get/Set类方法。而对于比较复杂的内联函数,虽然也可以放在.h头文件中,但还是建议你把它单独提出来放在后缀为-inl.h的头文件中,然后由.h头文件来include进来,这样使得代码结构更清晰,也使得类定义和实现相分离。

其实-inl.h的使用方法,还可以用在函数模板的定义上,这样会使你的模板定义更加清晰可读。

最后提醒一句,不要忘记在-inl.h中仍然要使用#define防御哦。

转载出处:http://roclinux.cn/?p=3414


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值