インライン関数
C++およびC99以降のC言語は inline キーワードによるインライン関数を標準サポートしている。Microsoft Visual C++はバージョン2017においてもC99をフルサポートしておらず、C言語モードでは inline キーワードをサポートしていないが、代わりにインライン関数は独自拡張の __inline キーワードで対応している。Microsoft Visual C++やg++などは、インライン関数として指定されていなくてもインライン展開すべき関数を自動的に展開するオプションを用意している。Adaでは pragma をインライン関数として使うことができる。Delphi (Object Pascal) はバージョン2005以降でインライン関数のサポートを追加した。JavaやJavaScriptは言語仕様には存在しないが、JITコンパイラが最適化の一環でインライン展開することもある。OracleのJava SEコンパイラはインラインディレクティブオプションをサポートする。関数型言語など他の多くの言語はインライン関数をサポートしていないが、インライン展開を積極的に行うことが多い。インライン展開の方針はコンパイラによって異なる。
C99/C++でのインライン関数の定義例および使用例を以下に示す。
C++ではクラスおよび構造体のインラインメンバー関数を定義することもできる。クラスおよび構造体の型定義内に直接実装を記述したメンバー関数は、暗黙的にinlineとなる。
C++では、関数テンプレート、コンパイラが暗黙的に宣言と定義を自動生成した特殊メンバー関数(英語版)、C++11以降のconstexpr関数も暗黙的にinlineである。