そういえばデバッグレベルを設定したことなかった.
import std.stdio; void main() { debug writeln("void"); debug(0) writeln(0); debug(1) writeln(1); debug(2) writeln(2); }
これを色々な debug オプションを付けて実行すると・・・
>dmd a -debug && a void 0 1 >dmd a -debug=0 && a 0 >dmd a -debug=1 && a void 0 1 >dmd a -debug=2 && a void 0 1 2
デバッグレベル 0 でコンパイルすると,デバッグレベルを指定していない debug{} のコードがコンパイルされない.
まとめ
- debug(N){} は debug=N に対応する.
- ただし (N) がないとき -debug=1 と等価,また,N=0 のとき debug{} も除かれて debug(0){} だけがコンパイルされる.
疑問
もしかして,-debug=0 の 0 は Identifier として解釈されている?