페이지 하단의 here에서이 견적을 확인하십시오. consts 할 반면, 그들은 최종 출력 개체/라이브러리/실행의 모든 공간 을 소모하지 않는const vs enum in D
그래서 분명히열거는 점에서 consts 다르다 (나는 약
const
들invariant
의도에 적용되는 인용 코멘트를 믿는다).value2
가 리터럴로 취급되고, 오브젝트 파일에 나타나지 않는 동안
value1
는 실행 파일을 부풀게합니다.
const int value1 = 0xBAD;
enum int value2 = 42;
돌아 가기 C++에서 나는 항상이 상수를 최적화 할 수없는 레거시 이유, 오래된 컴파일러했다 추측했다. 그러나 이것이 D에서 여전히 사실이라면, 이것의 뒤에 더 깊은 이유가 있어야합니다. 왜 그런지 알아?
그러나 컴파일러는 항상 모든 관련 소스를 가지고 있다고 가정합니다. – larsivi
타사 라이브러리에 해당 const 변수에 대한 액세스 권한을 부여하려면 어떻게합니까? 그것이 const로 만들어진 전체 클래스 인스턴스라면? – Marenz
참고 "컴파일러/* 링커 *". 게다가 D는 어쨌든 컴파일 타임에 변수의 값을 볼 수 있어야합니다 (상수 폴딩과 다른 것들을 위해서), 어딘가에 물리적으로 저장하는 것이 더 적습니다. - 소스가 필요한 상황 어쨌든 가능합니다. (나는 이전에 객체 코드를 내부적으로 분해하는 컴파일러에 대해서는 잘 모르고있다.) – FeepingCreature