inl文件是内联函数的源文件。内联函数一般在C++头文件中实现,可是当C++头文件中内联函数过多的状况下,咱们想使头文件看起来简洁点,能不能像普通函数那样将内联函数声明和函数定义放在头文件和实现文件中呢?固然答案是确定的,具体作法将是:将内联函数的具体实现放在inl文件中,而后在该头文件末尾使用#include
引入该inl文件。ios
因为编译器等不支持将模板函数、模板类等放单独分开编译,可是有了inl文件,咱们能够把声明放在头文件中,而后将具体实现放在inl文件中。c++
对于比较大的工程来讲,出于管理方面的考虑,模板函数、模板类的声明通常放在一个或少数几个头文件中,而后将其定义部分放在inl文件中。这样可让工程结构清晰、明了。git
在Google的C++代码编程规范中也说到了inl文件,须要阅读的同窗能够从这里阅读Google的C++代码规范:Google C++ Style Guide。github
//inl_demo.h
#ifndef _INL_DEMO_H_
#define _INL_DEMO_H_
template<typename T>
T return_max(T &T1, T &T2);
#include "inl_demo.inl"
#endif
//inl_demo.inl
#ifndef _INL_DEMO_INL_
#define _INL_DEMO_INL_
#include "inl_demo.h"
template<typename T>
T return_max(T &T1, T &T2){
return T1 > T2 ? T1 : T2;
}
#endif
//main.cc
#include <iostream>
#include "inl_demo.h"
using namespace std;
int main(int argc, char *argv[]){
int a = 10;
int b = 20;
cout << "The Max is :" << return_max(a, b) << endl;
return 0;
}