Cの#defineとは何ですか?


ベストアンサー

#defineはC言語のプリプロセッサステートメントです。

#で始まるすべてのステートメントはプリプロセッサです。ステートメント。

1。

#define MAX\_STUDENTS 200

#defineは上記のように、(任意のタイプの)マクロ定数を宣言します。コード内の多くの場所で値を使用すると、コードの保守が容易になります。 MAX\_STUDENTSの値を変更する必要がある場合、複数の場所ではなく1行のコードでのみ変更する必要があります。

このアプローチの欠点はデバッガーであり、この値を認識しません。

int arr [MAX\_STUDENTS];

以下に示すように、条件付きコンパイルでも使用できます

#define WINDOWS

#ifdef WINDOWS

..

.. code of Windows OS

..

#else

..

.. code of Linux OS

..

#endif

注:#undefを使用して定義を解除できます

2。

#define SQUARE(x)(x * x)

マクロ関数は通常の関数と似ていますが、実行時に関数を呼び出す代わりに、プリプロセッサがメソッド呼び出しを置き換える点が異なります。

関数呼び出しのオーバーヘッドが回避されるため、実行が高速になるという利点があります

SQUARE(2 + 3)

欠点は、マクロ関数が通常の関数として動作しないことです。たとえば、上記のマクロ呼び出しSQUARE(2 + 3)を考えてみます。これにより、値が11になり、通常の関数は25を返します。

サイズが大きい場合は、(通常の関数ではなく)マクロ関数を使用することをお勧めします。は1行または2行であり、上記のように副作用はありません。

回答

#defineはCですプリプロセッサ ディレクティブ マクロの定義に使用されます。

それを分解しましょう。

プリプロセッサディレクティブは、プログラムのコンパイルが行われる前に呼び出されるプログラムステートメントです。実際には、文字はプリプロセッサです。これには、 include ディレクティブも含まれます。プリプロセッサディレクティブは、使用される一般的な命令または必要なデータを提供するために使用されます。プログラム内。

マクロは、名前が付けられたコードのブロックです。その名前が出現する場合は、replaです。マクロの値によって割り当てられます。たとえば、AMOUNTという名前のマクロを定義しました。値は200です。プログラムでAMOUNTという単語が使用されるたびに、コンパイル前に数値200に置き換えられます。データが実際に内部に格納される変数とは対照的に、マクロエイリアス名のように動作します。

#defineディレクティブの構文は次のとおりです。

#define MACRONAME value

または

#define MACRONAME (expression)

マクロには、数値と文字(引用符で囲む必要があります)の値を割り当てることができます。マクロは次のように使用できます。その他の定数変数。

#undefディレクティブを使用してマクロの定義を解除することもできます。構文は次のとおりです。

#undef MACRONAME

//MACRONAME can no longer be used in the program

私の答えがお役に立てば幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です