再帰関数のインライン化
再帰関数はインライン化できないというのはよくある誤解です。ただし、一定の考慮事項はありますが、コンパイラは実際に再帰関数をインライン化できます。
インライン修飾子とコンパイラの最適化
関数のインライン指定子は、単に関数のヒントにすぎません。コンパイラ。インライン修飾子に関係なく、関数をインライン化するかどうかの最終決定権はコンパイラにあります。
コンパイラのインライン化の決定
コンパイラは、関数をインライン化するかどうかをベースに決定します。
インライン化の最適化の例
次の再帰階乗関数を考えてみましょう。
inline int factorial(int n) {
if (n 次の最適化されたコードに見られるように、最適化コンパイラはこの関数を特定のレベルまでインライン化する可能性があります。
if (n
この場合、コンパイラは階乗関数を 3 回展開し、再帰呼び出しの一部を効果的にインライン化しています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3