2014-09-29 10 views
3

DMD가 version(DMD){}을 사용하여 주어진 코드를 컴파일하고 있는지 테스트 할 수 있지만 어떻게 버전을 확인할 수 있습니까? (2.66/2.65 등)컴파일 타임에 DMD 버전을 어떻게 확인할 수 있습니까?

좀 더 간결하게, 나는 @nogc 수식어가 존재하는지 확인하고 싶습니다. 과 그렇지 않은 경우 - 더미를 정의하십시오.

내가 해결 해낸 :

static if(!__traits(compiles,()@nogc{})) 
{ 
    struct nogc; 
} 

하지만 더 좋은 방법은 무엇입니까? 예를 들어 특정 수정 자의 존재 여부를 직접 확인할 수도 있습니다.

답변

6

미리 정의 된 __VERSION__ 상수를 사용할 수 있습니다.

더 쉬운 사용 방법은 std.compiler 모듈 (특히 version_majorversion_minor)을 참조하십시오.

그러나 해결 방법이 더 나은 방법 일 수 있습니다. 릴리스 된 버전 간의 컴파일러 빌드에서도 코드가 올바르게 작동합니다.