유닛 의존성

유닛 의존성

프로그램이 어떤 유닛을 사용하고, 그 유닛이 또 다른 유닛을 사용한다면, 프로그램은 그 두 번째 유닛에 간접적으로 의존하게 돼요. 자주 마주치는 컴파일 시점 오류와 순환 의존 문제를 이해하는 데 중요한 내용입니다.

출처: 문서

본문

프로그램이 어떤 유닛(unitA)을 사용하고, 이 유닛이 두 번째 유닛(unitB)을 사용한다면, 프로그램은 unitB에도 간접적으로 의존하게 돼요. 즉 컴파일러가 프로그램을 컴파일할 때 unitB에 접근할 수 있어야 합니다. 컴파일 시점에 유닛이 없으면 오류가 발생해요.

프로그램이 간접적으로 의존하는 유닛의 식별자는 프로그램에서 접근할 수 없다는 점을 기억하세요. 어떤 유닛의 식별자에 접근하려면, 그 유닛이 식별자가 필요한 프로그램이나 유닛의 uses 절에 있어야 합니다.

상호 의존

유닛은 서로 의존할 수 있어요. 즉 uses 절에서 서로를 참조할 수 있습니다. 이는 적어도 하나의 참조가 유닛의 implementation 섹션에 있다는 조건 하에 허용됩니다. 이 규칙은 간접적으로 서로 의존하는 유닛에도 적용돼요.

한 유닛의 interface uses 절에서 시작해 interface의 uses 절만을 거쳐 다시 그 지점으로 돌아올 수 있다면, 그것은 순환 유닛 의존(circular unit dependence)이며 컴파일러가 오류를 생성합니다. 예를 들어 다음은 허용되지 않아요.

Unit UnitA;
interface
Uses UnitB;
implementation
end.
Unit UnitB
interface
Uses UnitA;
implementation
end.

하지만 다음은 허용됩니다.

Unit UnitA;
interface
Uses UnitB;
implementation
end.
Unit UnitB
implementation
Uses UnitA;
end.

UnitB가 UnitA를 implementation 섹션에서만 사용하기 때문이에요. 일반적으로, 유닛 간 상호 의존은 implementation 섹션에서만 하더라도 좋은 생각이 아닙니다.

더 알아보기