在C++ Boost庫中,爲什麼某些頭文件中存在「.ipp」擴展名?在C++ Boost庫中,爲什麼某些頭文件中存在「.ipp」擴展名
看起來他們是同名的「.hpp」文件包含的頭文件。
這個約定在Boost之外常見嗎?
什麼是具有特殊文件類型的理由?
在C++ Boost庫中,爲什麼某些頭文件中存在「.ipp」擴展名?在C++ Boost庫中,爲什麼某些頭文件中存在「.ipp」擴展名
看起來他們是同名的「.hpp」文件包含的頭文件。
這個約定在Boost之外常見嗎?
什麼是具有特殊文件類型的理由?
Explanation從模板大師之一:
如果您想要將模板源分解爲接口和 實現(有很多很好的理由可以做到這一點,包括控制實例的 ),您不能很好地使用相同名稱 (foo.hpp)兩次,並且foo.cpp對任何一個都不適用。 foo.ipp清楚地將文件描述爲一個實現文件,旨在將 #include在foo.hpp中。
我相信「ipp」代表「實施」文件。也就是說,他們居然持有代碼(inline函數&模板),而不是僅僅聲明(這是在頭 - H或.HPP - 文件。)