seclan のほえほえルーム

| |

・プログラミング言語 C の新機能 Part XXII: inline 関数定義 (1999/08/02 [])
 C++ にもある機能が C にも導入されました。その機能は inline 関数定義の機能です。今までの C 言語では、関数のように記述でき、しかも高速に呼び出せるようにしたい場合には、関数型マクロを使用する必要がありました。しかし、関数型マクロでは型検査ができない上、使い方にはよっては予測できない結果を導くこともありました。
 今回導入される inline 機能を使うと、型検査もされ、さらに通常の関数と同じ評価がなされ、かつ高速に実行できる関数を定義することができます。使い方は、ただ単に関数を inline キーワードを使って修飾するだけです。例えば、inline void swap(int *a1, int *a2){...} です。ただし外部リンケージを持つ関数に対しては、inline 付きの関数宣言を行ったらその定義を同じ翻訳単位中でしなくてはならない、修正可能な静的記憶寿命を持つ定義をふくんではならない、内部リンケージを持つ識別名への参照をふくんではならない、という制約があります。また main 関数は inline 修飾をすることができません。
 inline 定義はコンパイラに対するヒントであり、コンパイラは必ずしも高速呼び出しコードを生成するとは限りません。


by seclan


| |

 

配信

4.68 msec