プログラムのインライン化を制御する
テクニカル・ノート 181204J
アーキテクチャ:
All
コンポーネント:
compiler
更新日:
2018/12/18 5:48
はじめに
このテクニカルノートは、#pragma inlineを使用したインライン化の方法について説明します。
解説
#pragma inlineは関数を呼び出し側で展開する(インライン化)ことを促す機能を持ちます。
構文は
#pragma inline[=forced|=never]
になります。つまり次のようにコーディングします。
#pragma inline
void foo(void) { … }
#pragma inline=forced
void foo(void) { … }
#pragma inline=never
void foo(void) { … }
- コンパイラは、独自の判断でインライン化を試みますが、#pragma inline はコンパイラに対してインライン化の基準を下げることを、#pragma inline=forcedは強制的にインライン化することを要求します。#pragma inline=neverは関数がインライン化されないように要求します。
- コンパイラは、インライン化を試みた結果、プログラムサイズが非常に大きくなる場合、インライン化を中止します。この時、#pragma inline=forcedが指定されていた場合は、ワーニングメッセージを出力します。
- Embedded Workbench for Armバージョン7.80以前のバージョンでは最適化レベルが「低」または「無し」の場合は、インライン化は試みられません。#pragma inline=forcedが指定されていた場合、ワーニングメッセージが出力されます。
まとめ
#pragma inlineを使用してインライン化の制御を行う方法について説明しました。
全ての製品名は、それぞれの所有者の商標または登録商標です