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

Technical Note 181204J

Targets:
All

Component:
Compiler

Updated:
12/18/2018 5:48 AM

はじめに

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

 

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

 

© IAR Systems 1995-2018 - All rights reserved.

当ウェブサイトではユーザ利便性向上のためにCookieを利用しています。サイトの閲覧を継続するためにはCookieの使用について承諾する必要があります。 Cookies