通常、私は宣言と定義を完全に分割することを好みます。そのため、.cpp
別のコンパイル ユニットで使用されるときに、リンク オプティマイザーがインライン化することを願っています。
私の質問は次のとおりです。
- リンカーがリンク時にインラインをサポートしていることがわかっている場合、cpp でインライン化することは本当にお勧めできませんか?
- 別のライブラリから関数を呼び出したい場合はどうすればよいですか? (うまくいきますか?)
通常、私は宣言と定義を完全に分割することを好みます。そのため、.cpp
別のコンパイル ユニットで使用されるときに、リンク オプティマイザーがインライン化することを願っています。
私の質問は次のとおりです。
関数をマークする場合は、それが使用されるすべての翻訳単位で定義を提供するinline
必要があります。これは、定義を単一の に入れることと互換性がありません。.cpp
関数をシングルに配置する.cpp
場合は、宣言しないでくださいinline
。関数をインライン化する場合は、ツールチェーンに依存し、適切な最適化フラグをコンパイラとリンカーに渡す必要があります。ツールチェーンが実際にどの関数をインライン化するかは、実験する必要があります。
ツールチェーンによっては、関数を実装固有の属性で修飾して、インライン化する関数を示すことができる場合があります。