コンテンツへスキップ
uencoder

Macro

マクロはコンパイル時にコードを展開し、メタプログラミング(コードを生成するコード)を可能にする。重複と定型コードを避けられる。

目的

コンパイル時のコード変換により、定型コードを排除し DSL を実装する。

メカニズム

C のマクロはテキスト置換(プリプロセッサ)である。Rust のマクロは衛生的で AST に展開される。Lisp のマクロはコードをデータとして扱う。JS にはタグ付きテンプレートリテラルがある。マクロは関数より柔軟だがデバッグは難しく、使用には注意がいる。

ユースケース

  • コード生成
  • DSLの構築
  • 定型コードの削減

関連用語

References