void x(){ thisIsALongFunction(); }
如上图所示的代码, x()中只有一句话, 但是它所调用的函数很长, 这种情况下需要inline吗?
x()
inline
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
この場合、コンパイラは外部関数を直接インライン化します。
inlineこれはコンパイラへの単なる提案であり、要件ではありません。
ただし、主流のコンパイラの実装はあなたの提案を無視します。 O2 をオンにすると、短い関数は自動的にインライン化されますが、長い関数はインライン化されません。だから無視してください。
O2
追加します。インライン展開により、カプセル化の余分な層が削除され、内部のカプセル化はまだ存在するはずです
これらの問題については心配する必要はありません。コンパイラによって最適化されたコードが inline であるかどうかは関係ありません。
まず、インラインが何のためにあるのかを理解してください。
この場合、コンパイラは外部関数を直接インライン化します。
inline
これはコンパイラへの単なる提案であり、要件ではありません。ただし、主流のコンパイラの実装はあなたの提案を無視します。
O2
をオンにすると、短い関数は自動的にインライン化されますが、長い関数はインライン化されません。だから無視してください。追加します。インライン展開により、カプセル化の余分な層が削除され、内部のカプセル化はまだ存在するはずです
これらの問題については心配する必要はありません。コンパイラによって最適化されたコードが
inline
であるかどうかは関係ありません。まず、インラインが何のためにあるのかを理解してください。