전방 선언된 함수
전방 선언된 함수 (Forward declared functions)
함수를 구현 없이 선언만 하고, 실제 구현은 모듈에서 나중에 할 수 있어요. 이걸 전방 선언이라고 해요.
출처: 문서
본문
함수는 구현(implementation)을 바로 뒤에 붙이지 않고 선언만 할 수 있어요. 이를 위해 함수 뒤에 forward 지시어를 붙이죠. 해당 함수의 실제 구현은 모듈 안에서 나중에 와야 해요. 전방 선언 후에는 이미 구현된 함수처럼 자유롭게 사용할 수 있어요. 다음은 전방 선언의 예시예요.
Program testforward;
Procedure First (n : longint); forward;
Procedure Second;
begin
WriteLn ('In second. Calling first...');
First (1);
end;
Procedure First (n : longint);
begin
WriteLn ('First received : ',n);
end;
begin
Second;
end.
여기서 First가 실제 구현보다 앞서 선언(forward)되었기 때문에, Second 안에서 First를 호출할 수 있어요.
전방 선언에는 몇 가지 규칙이 있어요.
- 함수는 한 번만 전방 선언할 수 있어요.
- 유닛에서는 인터페이스(interface) 부분에 선언된 함수를 전방 선언할 수 없어요. 인터페이스 선언 자체가 전방 선언으로 간주되기 때문이죠.
- 반대로, 인터페이스 섹션에 선언된 함수는 구현(implementation) 섹션에서 forward로 선언할 수 없어요. 이미 선언되었기 때문이에요.
다음 유닛은 컴파일하면 오류가 발생하는 잘못된 예시예요.
Unit testforward;
interface
Procedure First (n : longint);
Procedure Second;
implementation
Procedure First (n : longint); forward;
Procedure Second;
begin
WriteLn ('In second. Calling first...');
First (1);
end;
Procedure First (n : longint);
begin
WriteLn ('First received : ',n);
end;
end.