C++中的INL


inl文件介紹

inl文件是內聯函數的源文件。內聯函數通常在C++頭文件中實現,但是當C++頭文件中內聯函數過多的情況下,我們想使頭文件看起來簡潔點,能不能像普通函數那樣將內聯函數聲明和函數定義放在頭文件和實現文件中呢?當然答案是肯定的,具體做法將是:將內聯函數的具體實現放在inl文件中,然后在該頭文件末尾使用#include引入該inl文件。

由於編譯器等不支持將模板函數、模板類等放單獨分開編譯,但是有了inl文件,我們可以把聲明放在頭文件中,然后將具體實現放在inl文件中。

對於比較大的工程來說,出於管理方面的考慮,模板函數、模板類的聲明一般放在一個或少數幾個頭文件中,然后將其定義部分放在inl文件中。這樣可以讓工程結構清晰、明了。

在Google的C++代碼編程規范中也說到了inl文件,需要閱讀的同學可以從這里閱讀Google的C++代碼規范:Google C++ Style Guide

簡單示例

  1. //inl_demo.h
  2. #ifndef _INL_DEMO_H_
  3. #define _INL_DEMO_H_
  4. template<typename T>
  5. T return_max(T &T1, T &T2);
  6. #include "inl_demo.inl"
  7. #endif
  1. //inl_demo.inl
  2. #ifndef _INL_DEMO_INL_
  3. #define _INL_DEMO_INL_
  4. #include "inl_demo.h"
  5. template<typename T>
  6. T return_max(T &T1, T &T2){
  7. return T1 > T2 ? T1 : T2;
  8. }
  9. #endif
  1. //main.cc
  2. #include <iostream>
  3. #include "inl_demo.h"
  4. using namespace std;
  5. int main(int argc, char *argv[]){
  6. int a = 10;
  7. int b = 20;
  8. cout << "The Max is :" << return_max(a, b) << endl;
  9. return 0;
  10. }
作者: hahaya
出處: http://hahaya.github.com/inline-file-in-cplusplus
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM