////
Search

전방선언(forward declaration)

나중에 이런 게 있을 거야라고 미리 알려주는 선언

개념

정의(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
복사