使用调试语句逃避安全性

Nor*_*löw 2 d debug-print memory-safety pure-function

我知道

debug writeln("Some good debug message")
Run Code Online (Sandbox Code Playgroud)

pure功能,但我已经仔细标记为@safe或的功能@trusted呢?DMD目前不允许使用debug writeln,因为writeln目前和类似@system.这是恕我直言,非常令人沮丧.有一个聪明的方式来逃避安全还是我暂时注释掉我所有的@safe@trusted标签?

Ada*_*ppe 5

我做的是制作我自己的@trusted debug_writeln.

@trusted void debug_writeln(T...)(T t) {
      import std.stdio;
      writeln(t);
}
Run Code Online (Sandbox Code Playgroud)

由于这是@trusted,它将在@safe函数内部工作而不会改变任何东西.您也可以将其称为writeln,然后不导入std.stdio或别名以强制消除歧义.