プログラムのインライン化を制御する

テクニカル・ノート 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を使用してインライン化の制御を行う方法について説明しました。

 

全ての製品名は、それぞれの所有者の商標または登録商標です

 

申し訳ございませんが、弊社サイトではInternet Explorerをサポートしていません。サイトをより快適にご利用いただくために、Chrome、Edge、Firefoxなどの最新ブラウザをお使いいただきますようお願いいたします。