[C言語] Cパズルブック 6.1.1 単純なポインタと配列 defs.h

『Cパズルブック』(Alan R.Feuer, 1985)
[Mac M2 Pro 12CPU, macOS Ventura 13.3.1, clang 14.0.3]

第2章から第5章は後回しにしてポインタを扱う第6章に着手します。

まずはマクロをまとめたdefs.hを作成して(教本P37に掲載)、問6.1.1のコードを走らせました。defs.hは現在のclangで使えるよう修正しています。

配列の中身を順次出力するという内容です。

#include <stdio.h>

#define PR(format, value) printf("value = %"#format"\t",value)
// #define PR(format, value) printf("value = %format\t"),(value)) // 1985年の書き方

#define NL putchar('\n') // 改行

#define PRINT1(f, x1) PR(f, x1), NL
#define PRINT2(f, x1, x2) PR(f, x1), PRINT1(f, x2)
#define PRINT3(f, x1, x2, x3) PR(f, x1), PRINT2(f, x2, x3)
#define PRINT4(f, x1, x2, x3, x4) PR(f, x1) PRINT3(f, x2, x3, x4)

// CパズルブックのP37に掲載
#include "defs.h"

int a[] = {0, 1, 2, 3, 4};

int main() {
    int i, *p;

    for (i = 0; i <= 4; i++){
        PR(d, a[i]);
    }
    NL;

    return 0;
}
value = 0	value = 1	value = 2	value = 3	value = 4