D中有静电打印吗?

时间:2013-10-29 06:20:28

标签: compiler-errors d compiler-warnings

我们确实有静态分支和特征以及合同编程功能。由于提供正确信息的断言功能,合同很棒。静态检查不会给编译的代码带来任何开销。因此,在编译时提供适当的错误消息的功能自然会非常有用。

例如,当一个人尝试使用我的函数得到一个向量和一个差分1-form的交叉乘积时,有了断言我可以专门告诉他关于域的问题,而不是关于编译器如何看待它的问题。结构和数组的术语。或者我可以静态缩小函数参数类型,但用户必须处理编译器消息,而不是我的。

所以,问题是:在编译时是否有某种方法可以打印自定义消息?

1 个答案:

答案 0 :(得分:9)

是的,您可以使用以下几种方式发出自定义消息:

  1. pragma(msg, message)将评估message表达式并在编译期间打印结果。
  2. 当在编译时计算的static assert(expression, message)为false时,
  3. expression将导致编译中止。这是C #error预处理程序指令的D等价物。
  4. 在CTFE(编译时功能执行)期间,未捕获的异常和断言失败将充当编译时错误,并发出附加消息。
  5. deprecated关键字现在可以有解释信息。
  6. 目前无法在CTFE解释期间打印评估表达式,但ctfeWriteln被提议为writeln变体,在CTFE解释期间有效。