関数の自動インライン展開とスタティック関数

最適化レベルが -O2 および -O3 の場合、または --autoline が指定されている場合、コンパイラは、関数が __inline または inline と宣言されていない場合でも、関数をインライン展開することが実際的かつ可能であれば、自動的に関数をインライン展開できます。これは、スタティック関数のすべての使用をインライン展開できる場合にはアウトオブラインコピーが必要ないので、スタティック関数に適しています。関が static(または __inline)として明示的に宣言されていない限り、コンパイラは、他のモジュールから呼び出された場合に備え、関数のアウトオブラインバージョンを保する必要があります。

非インライン関数が定義されている変換単位の外部で使用されない場合は、すべての非インライン関数を static としてマークして下さい(変換単は、ソースファイルのプリプロセッサ出力と、#include ディレクティブの結果としてインクルードされるすべてのヘッダおよびソースファイルを合わせたものです)。通常、非インライン関数の定義はヘッダファイル内には配置しません。

モジュールの外部から呼び出されない関数を static として宣言しなかった場合、コードが悪影響を受けることがあります。具体的には以下のデメリットが挙げられます。

このような問題のため、別のモジュールから呼び出されることが決してないと確信できる非インライン関数については、static として宣言することが重要です。

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0472EJ
Non-ConfidentialID081711