C++ の基本文法 - インライン関数

はじめに:C言語では、データの変更を容易にするためにマクロ定義を使用しますが、C++では、プログラムの動作効率を高めるために、コードサイズの小さいよく使う関数をインライン化することをインライン関数と呼びます。

1. 過去を振り返る

マクロ定義のメリット:
1. 厳密な型の制限がない
2. 頻繁に使用する小規模な関数については、スタックフレームが確立されないため効率が向上
マクロ定義のデメリット:
1. 直接置換するため、構文の落とし穴が多い
2. デバッグできない3.
型安全性チェックがない

2. インライン関数とは

inline で変更された関数は inline 関数と呼ばれ、コンパイル時に C++ コンパイラによって inline 関数が呼び出された場所に展開されます。スタックフレームを構築するための関数呼び出しのオーバーヘッドなし、インライン関数を使用すると、プログラムの動作が効率化されます。コンパイル中に、関数呼び出しは関数本体に置き換えられます。

inline int Add(int x, int y)  //在原本的函数声明前加inline
{
    
    
	return x + y;
}

3. インライン機能

1.インライン関数の宣言と定義は分離できません(.hファイル内で宣言した場合は直接定義されます)そうでない場合は、リンク エラーが発生します。
インライン関数はマクロ命令のようなものであるため、呼び出した場所で直接展開され、コンパイル時に通常の関数でよくあるAddなどのアセンブリ命令は生成されず、スタックフレームも作成されず、住所。インライン関数の宣言と定義が分離されている場合、インライン関数が定義されているソースファイル以外ではインライン関数を呼び出すことができません。
2.inline は一種の時間のためのスペースこのアプローチでは、コンパイル段階で関数呼び出しが関数本体に置き換えられます。
欠点: 直接展開すると、ターゲット ファイルが大きくなる可能性があります。
利点: 関数スタック フレームのオーバーヘッドがないため、効率が向上します。
3. 「C++prime」第 5 版のインラインに関する提案: インライン命令はコンパイラにリクエストを行うだけであり、コンパイラはこのリクエストを無視できます。
4. 通常の状況では、サイズが小さく、頻繁に呼び出され、再帰的ではない関数にはインライン変更を使用します。そうしないと、コンパイラはインライン機能を無視します (3 番目の点を参照)。

おすすめ

転載: blog.csdn.net/qq_73390155/article/details/132223845