我们确实有静态分支和特征以及合同编程功能。由于提供正确信息的断言功能,合同很棒。静态检查不会给编译的代码带来任何开销。因此,在编译时提供适当的错误消息的功能自然会非常有用。
例如,当一个人尝试使用我的函数得到一个向量和一个差分1-form的交叉乘积时,有了断言我可以专门告诉他关于域的问题,而不是关于编译器如何看待它的问题。结构和数组的术语。或者我可以静态缩小函数参数类型,但用户必须处理编译器消息,而不是我的。
所以,问题是:在编译时是否有某种方法可以打印自定义消息?
答案 0 :(得分:9)
是的,您可以使用以下几种方式发出自定义消息:
pragma(msg, message)
将评估message
表达式并在编译期间打印结果。static assert(expression, message)
为false时,expression
将导致编译中止。这是C #error
预处理程序指令的D等价物。deprecated
关键字现在可以有解释信息。ctfeWriteln
被提议为writeln
变体,在CTFE解释期间有效。