マクロ定義は、一般的に使用される前処理ディレクティブであり、「識別子」を使用して「置換リスト」の内容を表します。この識別子はマクロ名と呼ばれ、プリプロセッサはプリプロセス処理中にソースプログラム内のすべてのマクロ名をマクロ定義の置換リストの内容に置き換えます。
一般的なマクロ定義には、パラメーターのないマクロ定義とパラメーターのあるマクロ定義の 2 つがあります。
マクロ定義は、エラーを防止し、コードの移植性と可読性を向上させるのに役立ちます。
ソフトウェア開発のプロセスでは、よく使用される関数またはコード セグメントがいくつか存在します。これらの関数は、関数として記述したり、マクロ定義にカプセル化したりできます。それでは、関数とマクロ定義のどちらを使用する方が良いのでしょうか?そのためには、この 2 つの間で合理的な選択をする必要があります。
2 つの数値または式のサイズを比較する例を見てみましょう。まずマクロ定義として記述します:
#define MAX( a, b) ( (a) > (b) (a) : (b) ) # 其次,把它用函数来实现: int max( int a, int b) { return (a > b a : b) }
明らかに、これを完了するために関数を使用することは選択しません。理由は 2 つあります: 1 つ目は、関数呼び出しにより追加のオーバーヘッドが発生するため、スタック領域を開き、戻りアドレスを記録し、仮パラメータをスタックにプッシュし、関数から戻るときにスタックを解放する必要があります。このオーバーヘッドにより、コードの効率が低下するだけでなく、コードの量も大幅に増加します。マクロ定義の使用は、コード サイズと速度の点で関数よりも優れています。第 2 に、関数のパラメータは特定の型として宣言する必要があります。したがって、適切な型の式でのみ使用できます。2 つの浮動小数点型のサイズを比較したい場合は、浮動小数点型専用の比較関数を作成する必要があります。逆に、上記のマクロ定義は、整数、長整数、単一浮動小数点型、二重浮動小数点型、および値のサイズを比較するために「>」演算子を使用できるその他の型に使用できます。 、マクロはタイプに依存しません。
関数を使用する場合と比較して、マクロを使用する場合の欠点は、マクロを使用するたびにマクロ定義コードのコピーがプログラムに挿入されることです。マクロが非常に短い場合を除き、マクロを使用するとプログラムの長さが大幅に長くなる可能性があります。
以上がC言語でマクロ定義を定義する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。