インラインとマクロの違い

Anonim

インラインとマクロ

C ++はコンピュータプログラミングの分野では近すぎます。強力な言語であるため、巨大な関数ライブラリのためにプログラマーには少し混乱することがあります。インライン関数は、その言語のマクロと簡単に混同することができる関数の1つです。

両者の間には小さな違いがあるわけではありませんが、それらが保持する特性のためにちょっと混乱することがあります。この記事では、C ++のインライン関数とマクロの違いについて詳しく説明します。

<! - > - >

インライン

インライン関数は、C ++の他の関数と同様に、通常の方法で呼び出されます。実行する関数は、コンパイルされた関数定義のコピーを作成することです。つまり、定義された項目のコピーを作成してコンパイルします。たとえば、2つの整数を加算してインライン関数を呼び出すと、コンパイラはコンパイルする整数のコピーを作成します。

例:

<! - > - >

Inline int sum(int x、int y);

Return(x + y);

}

マクロ

C ++のマクロは、テキスト行をプログラム行に実装します。つまり、関数で定義された変更に従ってテキストを置き換えます。関数としてのインラインとは異なり、マクロは関数を使用してコードを操作します。例:

#define DOUBLE(X)X * X

int y = 5;

int j = DOUBLE(++ y);

ここでは、値を30にします!呼び出しはマクロを介して行われるので、 "X"は++ yに置き換えられ、++ yには別の++ yが乗算されます。これは合計で5 * 6で30 = 6ではありません.6は基本ですが間違った答えです。

<! - 3 - >

ここで、マクロがバグを引き起こしている可能性があります。インライン関数は、値をコンパイラのメモリにコピーしてコンパイルすることで救済されます。要約:

1。インライン関数は、関数定義のコピーを作成します。 2。関数内で識別され、定義されたテキストがマクロに置き換えられます。 3。インライン関数は、マクロがプログラムにバグを起こすはずの場合にも適用されます。