pit-rayの備忘録

開発中に得た知識を記事にしていくブログ

インライン関数はヘッダファイルで実装する

インライン関数はC++やC99以降のC言語でサポートされています。
インライン関数はマクロ関数のようにオーバヘッドを避けることができます。

インライン関数の書き方の例はこのようになります。

inline int Five() {
    return  5 ;
}

マクロ関数で実装する場合はこのようになります。

#define Five() 5

しかし、マクロは未定義の動作を引き起こす可能性があります。
この件に関する詳しいことは以下を参照してください。
PRE00-C. 関数形式マクロよりもインライン関数やスタティック関数を使う



今回話したいのはインライン関数の定義が利用時点で不明のとき、通常の関数として扱われるということです。

つまり、定義をcppファイルに書き、宣言をhファイルでするとコンパイル後にcppファイルをリンクするため、通常の関数として扱われます。

インライン展開はマクロ展開と同じように処理中に埋め込んだ形になるので、ヘッダファイルに書くのです。

<今回のまとめ>
インライン関数はヘッダファイルに実装する



<参考文献>
インライン展開がどう展開されるのかを調べた | おおたの物置
c++ - inline関数の実装はヘッダファイルでというのは何故? - スタック・オーバーフロー
C++ インライン関数 書いて覚えるための初心者自己中記事 - C++ 書いて覚えるための初心者自己中記事


何か本記事に不備等ありましたら、お気軽にご指摘ください。
間違った情報発信防止にご協力してくださると幸いです。

では失礼します ノ