検索

ホームページ  >  に質問  >  本文

C++函数很短, 但是函数内调用一个很长的函数, 该用inline吗?

void x(){
    thisIsALongFunction();
}

如上图所示的代码, x()中只有一句话, 但是它所调用的函数很长, 这种情况下需要inline吗?

高洛峰高洛峰2804日前597

全員に返信(5)返信します

  • 巴扎黑

    巴扎黑2017-04-17 14:29:40

    この場合、コンパイラは外部関数を直接インライン化します。

    返事
    0
  • 高洛峰

    高洛峰2017-04-17 14:29:40

    inlineこれはコンパイラへの単なる提案であり、要件ではありません。

    ただし、主流のコンパイラの実装はあなたの提案を無視します。 O2 をオンにすると、短い関数は自動的にインライン化されますが、長い関数はインライン化されません。だから無視してください。

    返事
    0
  • 阿神

    阿神2017-04-17 14:29:40

    追加します。インライン展開により、カプセル化の余分な層が削除され、内部のカプセル化はまだ存在するはずです

    返事
    0
  • 黄舟

    黄舟2017-04-17 14:29:40

    これらの問題については心配する必要はありません。コンパイラによって最適化されたコードが inline であるかどうかは関係ありません。

    返事
    0
  • PHPz

    PHPz2017-04-17 14:29:40

    まず、インラインが何のためにあるのかを理解してください。

    返事
    0
  • キャンセル返事