ぷろみん

プログラミング的な内容を扱ってます

inline, inlファイル

inlファイル

大体次のどちらかを意味します。

結局どっちもinline実装ファイルです。

inlineの意義

コンパイラの最適化が進んできたので今では大分無意味に近づいて来ました。

  • inlineが付いててもコンパイラがインライン展開しない方が早いと判断した場合はインライン展開されない。
  • inlineが付いてなくてもコンパイラはできるだけ早い実行ファイルを作ろうとするのでインライン展開の様な事もできる。

みたいな所が原因でしょうか。人間が判断する所では無くなったのでしょう。

ファイル分割の意義

宣言と実装を分ける(.hと.cpp)とinline化されなくなる対策として、ヘッダに宣言と実装両方書きinline化しつつ実装を隠蔽する為に使います。

// 宣言
int Get();

// 実装
// inline化する為にヘッダに書く必要があるけど、実装をヘッダに見せたくない
inline int Get(){
    return 0;
}
// 宣言
int Get();

// 見た目だけ隠蔽
#include "get_inl.h"

個人的にはインラインは付けなくて良いと思います。