ホームページ  >  記事  >  バックエンド開発  >  C のマクロと関数の違い

C のマクロと関数の違い

王林
王林転載
2023-08-30 23:49:061040ブラウズ

C のマクロと関数の違い

このセクションでは、C 言語のマクロと関数の違いについて説明します。マクロは前処理されます。これは、すべてのマクロがコンパイル時に前処理されることを意味します。関数は前処理されず、コンパイルされます。

型チェックはマクロでは実行されないため、異なる型を入力すると問題が発生する可能性があります。関数を使用すると、このようなことは起こりません。さらに、マクロの入力が正しく維持されていない場合、無効な結果が生成される可能性があります。質問がある場合は、次の手順を確認してください。

#include <stdio.h>
#define SQUARE(x) x * x
int sqr(int x) {
   return x*x;
}
main() {
   printf("Use of sqr(). The value of sqr(3+2): %d</p><p>", sqr(3+2));
   printf("Use of SQUARE(). The value of SQUARE(3+2): %d", SQUARE(3+2));
}

出力

Use of sqr(). The value of sqr(3+2): 25
Use of SQUARE(). The value of SQUARE(3+2): 11

関数とマクロ、両方で同じタスクを実行する必要がありますが、ここでは出力結果が異なることがわかります。主な理由は、関数のパラメーターとして 3 2 を渡すと、それが 5 に変換され、5 * 5 = 25 が計算されるためです。マクロの場合、3 2 * 3 2 = 3 6 2 = 11 が実行されます。

したがって、次の問題に対してマクロは推奨されません:

  • 型チェックなし

  • マクロがあるため、デフォルトでデバッグ モードになります。

  • マクロを名前空間なしで置き換えるだけです。したがって、マクロが 1 つのセクションで定義されている場合は、別のセクションで使用できます。

  • マクロは前処理の前に追加されるため、コード長が増加します。

  • マクロはコンパイル時エラーをチェックしません。

以上がC のマクロと関数の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。