음... 근본적인 이유는 잘 모르겠지만... 프로그램에서 만든 유닛이 하나라면, 둘 간(interface, implementation)의 차이는 interface에서 선언한 경우, interface 절에서도 해당 유닛의 상수나 타입을 사용할 수 있다는 차이밖에는 없죠...
하지만, 복잡한 프로젝트인 경우, 사용자가 작성한 여러 유닛을 서로 참조하게 되는데... 문제는 이 때 발생합니다. 모든 유닛에서 다른 유닛을 참조하기 위해서 모두 interface 절에서 유닛을 포함시키면...(글로 설명하려니 어렵네욤 -_-) 서로 다른 두 유닛간에 어떤 유닛을 먼저 포함해야 할지 몰라 컴파일러가 에러를 발생시킵니다.
// 유닛 A
interface
uses B;
// 유닛 B
interface
uses A;
요렇게 말이죠. ^^; 왜, C에서도 헤더 파일을 여러 번 중복되게 컴파일되지 않도록 #ifdef 등으로 막잖아요... 델파이에서는 이렇게 하지 않고, 서로 교차 참조가 될때는 한 유닛은 interface에서 uses하고, 다른 유닛에서는 implementation에서 그 유닛을 uses하는 겁니다. 음...
interface와 implementation에서 uses절의 차이에 대해 알고 싶습니다. 굳이 이렇게 나누어 놓은 이유가 있나요? 책에 보니 interfacd의 uses절에 포함된 unit 내에 uses된 unit도 참고가 가능하지만 implementation에서 그렇게 안된다고 ...
한원희
•
2002.11.05 18:49
안녕하세요. 한원희입니다.
음... 근본적인 이유는 잘 모르겠지만... 프로그램에서 만든 유닛이 하나라...
음... 근본적인 이유는 잘 모르겠지만... 프로그램에서 만든 유닛이 하나라면, 둘 간(interface, implementation)의 차이는 interface에서 선언한 경우, interface 절에서도 해당 유닛의 상수나 타입을 사용할 수 있다는 차이밖에는 없죠...
하지만, 복잡한 프로젝트인 경우, 사용자가 작성한 여러 유닛을 서로 참조하게 되는데... 문제는 이 때 발생합니다. 모든 유닛에서 다른 유닛을 참조하기 위해서 모두 interface 절에서 유닛을 포함시키면...(글로 설명하려니 어렵네욤 -_-) 서로 다른 두 유닛간에 어떤 유닛을 먼저 포함해야 할지 몰라 컴파일러가 에러를 발생시킵니다.
// 유닛 A
interface
uses B;
// 유닛 B
interface
uses A;
요렇게 말이죠. ^^; 왜, C에서도 헤더 파일을 여러 번 중복되게 컴파일되지 않도록 #ifdef 등으로 막잖아요... 델파이에서는 이렇게 하지 않고, 서로 교차 참조가 될때는 한 유닛은 interface에서 uses하고, 다른 유닛에서는 implementation에서 그 유닛을 uses하는 겁니다. 음...
// 유닛 A
interface
uses B;
// 유닛 B
implementation
uses A;
요렇게 되는 것이죠. ^^;
그럼, 도움이 되었나요? 즐푸여~