マクロ

Last-modified: 2021-12-08 (水) 17:32:54
 

マクロとは

C言語のマクロ機能では、プログラム中の数値などを文字列に置き換えて記述することができます。

例1

ユーザーが入力した数を 10 倍にして表示するプログラムの例です。
N という文字列が 10 という数値に置き換えられています。

 #include <stdio.h>
 #define N 10

 int main(){
    int n;

    scanf("%d", &n);
    printf("%d\n", n * N);

    return 0;
 }

例2

マクロは変数とは違い、プログラム実行前に置き換えが行われるので、以下のようなこともできます。

 #include <stdio.h>
 #define loop while(1)

 int main(){
    int n;

    loop {
        printf("0 以上 10 未満の数を入力してください:");

        scanf("%d", &n);

        if(n >= 0 && n < 10){
            break;
        }
    }

    return 0;
 }

変数には型がありますが、マクロは単なる置き換えなので型はありません
また、コンパイル時に処理されるので、マクロはプログラム中で代入できません

マクロの形式

マクロは次のような形式で利用します。

#define

名前には、一般的に大文字を用います。
これは、変数と区別する為です。

MAX を 100 と定義する。

 #define MAX 100

課題

課題1

以下のプログラムは意図した出力 (= 4 ) が得られません。
どうして動かないのか考え、修正しなさい。

プログラム中の、1 + 1という部分は残すこと

 #include <stdio.h>
 #define X 1+1

 int main(){
    printf("%d\n", X * X);
    return 0;
 }

課題2

C言語では、いくつかのマクロが最初から用意されています。
int 型の最大値と最小値を表すマクロをインターネットで検索して探しなさい。

また、そのマクロの数値を実際に表示させ、それがどのような数値なのか考察しなさい。

出力形式

改行区切りで、2つの数値を表示します。

int 型の最小値
int 型の最大値