と通常のstatic inline
関数の違いは何ですか?extern inline
inline
私はこれについていくつかのあいまいな説明を見てきました。私が理解している限り、キーワードが通常意味するように、特定のファイル内でのみ参照されることを意図した単なる関数でstatic inline
はありません。変数と同じ説明ではないと思います。どんな答えでも大歓迎です!inline
static
extern inline
extern
と通常のstatic inline
関数の違いは何ですか?extern inline
inline
私はこれについていくつかのあいまいな説明を見てきました。私が理解している限り、キーワードが通常意味するように、特定のファイル内でのみ参照されることを意図した単なる関数でstatic inline
はありません。変数と同じ説明ではないと思います。どんな答えでも大歓迎です!inline
static
extern inline
extern
を含む関数定義static inline
は、内部リンケージを持つインライン関数を定義します。このような関数は、これらの修飾子の「通常の」プロパティから「期待どおり」に機能します。static
内部リンケージを与え、inline
インラインにします。したがって、この関数は翻訳単位に対して「ローカル」であり、その中でインライン化されます。
inline
外部リンケージを持つインライン関数を定義するだけの関数定義。ただし、そのような定義はインライン定義と呼ばれ、その関数の外部定義としては機能しません。つまり、この関数には外部リンケージがありますが、別の外部定義をどこかに提供しない限り、他の翻訳単位からは未定義と見なされます。
を使用した関数定義extern inline
は、外部リンケージを使用してインライン関数を定義すると同時に、この定義がこの関数の外部定義として機能します。このような関数は、他の翻訳単位から呼び出すことができます。
extern inline
最後の 2 つのパラグラフは、外部リンケージを持つインライン関数に対して単一の定義を提供するか、2 つの別個の定義 ( oneinline
と other ) を提供するかを選択できることを意味しますextern
。後者の場合、関数を呼び出すと、コンパイラは 2 つの定義のいずれかを選択できます。