『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