简 述: .inl
在 C++ 大型工程项目中的作用?
[TOC]
本文初发于 “偕臧的小站“,同步转载于此。
背景
最近看安全项目代码,发现基础公共库里面使用到了大量的
- 内联
__inline
、 - 字符串
typedef
替换 - 模板
template < typename TYPE>
等;
在公共 src
文件夹中,仅有 .h
和 .inl
文件,而无一 .cpp
文件?
理解
.inl 文件是什么?
可以理解为 .cpp 文件
- 文件后缀名是毫无意义的,最好的例子就是无任何扩展名的 STL 头文件。对编译器也没有特殊含义;
- 仅一种约定的规则,表明这里这里面是一些内联函数和模板的实现。
- 某种极端特殊情况下,可以解决互相包含和前置声明无法编译通过的场景。
何时使用?
- 用于内联函数的定义
- 用于功能模板的定义
且通常会在 .h 文件的尾部,使用 #include 包含此文件。