はじめての C

[Learning GNU C]

10.5. マクロは 必要か?

マクロは language の 小さな 欠点を 補うために よく 使われた。 しかし language の 進化により こうした 試み defiance は ほとんど 脇へと 追いやられた。 プリプロセッサの マクロを 理解し その使い方を 知ることは 今でも 役にたつし それは とても 一般的だ。 より 長いものと 置き換えるための 部品 part として マクロは 人々に 使われるように なった。

10.6. 簡単な マクロの 代用

簡単な "#define" を const int 型の グローバル変数 (大域変数) global variable に 取り換えることを 考えたとすれば それは 正しい。 const 変数には いくつか 長所が あり 1つの 小さな 強みが 値を ポインタを 通して 渡す 必要の あるとき そのアドレスを 取得することが できることだ。 このやり方は マクロと 比べて より 柔軟性が ある。 仮りに const 変数の アドレスを 獲得できない場合には GCC が (変数を) "#define" と できるだけ 同じ 水準となるよう 活用 optimise させるように できる。

10.7. 複雑な マクロの 代用

複雑な マクロ、これは マクロとして 実行される 関数のこと。 インライン関数 inline function により 置き換えが 可能となる。

第11章 可変引数 variable length argument

VA_ARGS マクロ、その他の こと

11.1 可変引数とは なにか?

可変引数には あるものとして すでに 出会っている。 printf() を 思い出そう。 どれだけの (長さか) わからない 引数では この関数の 原型 prototype を どう 書いていただろうか?