.inl文件

背景

最近工作涉及到thrust库,看了半天也没找到一个头文件的函数定义,本来以为会有一个cpp源文件对应h头文件,后来问头文件的末尾发现了一个include<**.inl>,所以有必要了解这个文件组织形式。

引用

作者:Return Home朝闻道
出处:https://www.cnblogs.com/findumars/p/4340936.html

说明

inl文件是内联函数的源文件。内联函数通常在C++头文件中实现,但是当C++头文件中内联函数过多的情况下,我们想使头文件看起来简洁点,能不能像普通函数那样将内联函数声明和函数定义放在头文件和实现文件中呢?当然答案是肯定的,具体做法将是:将内联函数的具体实现放在inl文件中,然后在该头文件末尾使用#include引入该inl文件。

由于编译器不支持将模板的声明与实现分开编译,但是有了inl文件,我们可以把声明放在头文件中,然后将具体实现放在inl文件中。

对于比较大的工程来说,出于管理方面的考虑,模板函数、模板类的声明一般放在一个或少数几个头文件中,然后将其定义部分放在inl文件中。这样可以让工程结构清晰、明了

扩展

根据stackflow上的回答,可以看出这样的写法对于大型工程,可以减少编译时间。
https://stackoverflow.com/questions/1208028/significance-of-a-inl-file-in-c

你可能感兴趣的:(C++,基础,c++)