acl4の開発ログ #03
ここまでのもくじ
2026.01.01(木) #0
- ずっと悩んでいました。機能的にやりたいことを実現するのは全然難しくないのです。
- でもそれをかっこよく書くことができませんでした。どうやってもドンくさいのです。
- しかし今日になって、やっといい感じに書く方法を見つけました。
func(a, b, .c) → func(a, b, ADot1(c))
int func(int a, double b, .char *c) → int func(int a, double b, ADot1(char *c))
→ つまりドット1つから書き始めると、それはカッコ閉じか、次のコンマまでADot1(...) で囲われた形に置換されます。
..int d, e; → ADot2(int d, e;)
→ ドット2つから書き始めると、セミコロンまでを ADot2(...) で囲われた形に置換されます。
func.(a, b, c) → func(ADotArg1, a, b, c)
→ 関数呼び出しの際にドットを入れておくと、ADotArg1という引数を勝手に追加します。
func(,a,,c) → func(a, c)
→ 関数呼び出しなどで、不要なコンマはすべて自動で削除されます。
- たったこれだけをやってくれる簡易プリプロセッサがあれば、私がやりたくてたまらないことは実現できそうなのです。
2026.01.01(木) #1
- どんなことがしたいのか?
- [1] 目立たない方法でいくつかの引数を追加で渡したい。具体的に何を渡すかは後で考える。→ func.(...)
- [2] デバッグモードの時だけ追加の引数を渡したい。→ func(a, b, .c)
- [3] デバッグモードの時だけ変数を宣言したい。そのたびに #if ~ #endif を使うのはかっこわるい。→..int d, e;