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


