この投稿では、マクロ定数について説明します。
まず、プリプロセッサについて簡単に説明します。プリプロセッサは、プログラムのコンパイル前に実行され、#で始まるプリプロセッサディレクティブを処理します。たとえば、#defineなどがそれにあたります。
#defineは、ある文字列(名前)を定数の値に置き換える命令です。これを使って定義された定数のことを「マクロ定数」と呼びます。
たとえば、次のように定義した場合:
#define MAX_USERS 100このあとプログラム中で MAX_USERS と書けば、プリプロセッサがそれを 100 に置き換えてくれます。これにより、コードの意味が分かりやすくなり、値を一箇所で管理できるようになります。
次にマクロ定数を使う目的を説明します。
可読性の向上
定数の意味を分かりやすくするために使います。
#define iPI  3.14159
double area = iPI * r * r;保守性の向上
同じ値を複数個所で利用する場合、定義を変更するだけで済みます。
#define iBUFF_SIZE  128
unsigned char BUFF[iBUFF_SIZE]
    for( i=0 ; i<iBUFF_SIZE ; i++ )
    {
            sum = sum + BUFF[i]:意味が分かりにくい数値の排除
数値の意味が分かりにくい場合、マクロ定数でラベル名で意味を分かりやすくします。
#define iSECOND_IN_A_DAY  60 * 60 *24 /* 86400s/Day */
  if( s < iSECOND_IN_A_DAY )
  {条件付きコンパイルに仕様
プログラムコードを条件付きコンパイルで切り替えるときに使用します。
#define iTEST  1                 /* Debug SW 0:OFF 1:ON */
#ifdef iTEST == 1
    printf( "integer: %d", x); /* Debug Code */
#endif
