[C,C++]static inline

static(C/C++) 使われ方によって意味が違います。

  • 関数につける場合
    他のファイルから参照できなくなります。
  • メンバ関数につける場合
    ほぼ関数と同じ扱いになります。
    つまりthis等が使えないしstatic以外のメンバは呼べませんがスコープはそのままです。
  • (C++) メンバ変数につける場合:
    すべてのインスタンス共有になります。
  • (C++) 関数内の変数につける場合:
    ヒープに領域がとられ、毎回同じ部分が参照されます。
  • グローバル変数につける場合:
    他のファイルから参照できなくります。
  • inline(C++)
    インライン展開されます。
    インライン展開とはマクロ関数に近いですが、関数やメンバ関数と同じように書けます。
    一般的にインライン展開すると、関数呼び出しによるオーバーヘッドがなくなるので 実行速度ははやくなりますが、実行ファイルのサイズが増えます。
    またinline指定しなくてもコンパイラの最適化の設定によっては勝手にinline展開されます。

コメント

タイトルとURLをコピーしました