나중에 이런 게 있을 거야라고 미리 알려주는 선언
개념
•
정의(Definition) 전에 이름 & 형식(Signature)만 미리 알려주는 것
•
컴파일러가 그 이름을 사용할 수 있도록만 하고, 실제 내용은 뒤쪽에 있거나 다른 파일에 정의되어 있음
함수 전방 선언
•
C 컴파일러는 함수를 호출 하기 전에 해당 함수의 원형(prototype)을 알아야함
#include <stdio.h>
// 함수 전방 선언
void greet(void); // 컴파일러는 "greet함수가 있고, 인자는 없으며 반환값은 void구나"라고 인식
int main() {
greet(); // 정의는 아직 몰라도 호출 가능
return 0;
}
// 실제 정의
void greet(void) {
printf("Hello!\n");
}
C
복사
변수 전방 선언
•
전역 변수는 extern 과 함께 쓰면 다른 파일에 있는 변수를 전방 선언 가능
// file1.c
int counter = 0; // 정의
// file2.c
extern int counter; // 전방 선언
C
복사
구조체 전방 선언
•
구조체 이름만 미리 알려주는 경우
포인터로 참조할 때 사용(구조체 크기를 알 필요가 없을 때)
struct Node; // 전방 선언
void connect(struct Node *a, struct Node *b); // 포인터 사용은 가능
struct Node { // 실제 정의
int data;
struct Node *next;
};
C
복사
