계약이 코드 :ldc 및 gdc는 D 언어 계약을 지원합니까?
import std.stdio;
int TestContract(int a)
in
{
assert(a > 0);
}
do
{
return a + 1;
}
int main(string[] args)
{
auto a = 2;
try
{
writeln(a," + 1 is ",TestContract(a));
a = -2;
writeln(a," + 1 is ",TestContract(a));
}
catch (Exception e)
{
writeln(e);
}
return 0;
}
컴파일 및 DMD (v2.076.0 더러운),하지만 LDC (0.17.1) 또는 GDC (5.4.0 20160609)로 실행됩니다.
LDC는 말한다 :
contracts.d(12): Error: declaration expected, not 'do'
contracts.d(15): Error: unrecognized declaration
및 GDC는 말한다 :
contracts.d:12:1: error: declaration expected, not 'do'
do
^
contracts.d:15:1: error: unrecognized declaration
}
편집 : "몸"로 컴파일 대신 대답은 LDC와 성공에 따라, "할". 현재로서는 contract programming에 대한 dlang.org 문서 가능성이되지 않는 동안 몸가 여전히 작동하는지 언급하지 않으며, DMD의 버전 필요하다고
/usr/include/d/core/stdc/stdarg.d:48:5: error: undefined identifier __va_list_tag
alias __va_list = __va_list_tag;
참고 : GDC는 새로운 컴파일 오류를 가져옵니다 [unknown version] 이전의 컴파일러와 dmd 프론트 엔드를 사용하는 gdc 또는 ldc의 모든 버전 (unknown 버전 이전).
ldc (0.17.5)는'do'를 사용하고'body'를 사용하지 않고 나를 위해 일했습니다. dmd (2.077.0)도 효과가 있었으며 놀랄 일도 아닙니다. – Eljay