Constexpr 関数のインライン実装
質問:
C コードのコンパイル中に、constexpr は実行されます。指定子は関数のインライン指定子を暗黙的にトリガーし、非定数引数が渡された場合にコンパイラに関数をインライン化させますか?
答え:
はい。 C 11 標準 ([dcl.constexpr]、§7.1.5/2) によれば、"constexpr 関数と constexpr コンストラクターは暗黙的にインラインです (7.1.2)。"
影響:
インライン指定子は関数のインライン展開の可能性に最小限の影響を与えますが、その存在は constexpr と組み合わせると次のような影響を及ぼします。
コードの最適化への影響:
constexpr 指定子は関数を強制的にインライン化するのではなく、期待される単純さと複雑さが制限されているため、関数がインライン化に適していることを示唆しています。これにより、コンパイラーはインライン展開用にそのような関数の最適化を優先することになりますが、実際の決定はコンパイラーの裁量に任されます。
以上がC では「constexpr」は暗黙的に関数「inline」を作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。