////
Search

선언(declaration)과 정의(definition)의 개념 (.h파일, .c파일)

선언과 정의의 차이

개념
설명
메모리 할당 여부
선언(Declaration)
어떤 이름(변수, 함수 등)이 존재한다는 사실을 알리는 것
정의(Definition)
이름에 실제 메모리 공간을 할당하는 것 - 변수면 저장 공간, 함수면 본체(body)를 포함

변수의 선언 vs 정의

// 선언 - 다른 곳에 정의되어 있을 거라고 알림 extern int count; // 정의 - 실제 메모리 공간을 할당 int count = 0;
C
복사
extern : 해당 변수가 다른 파일 어딘가에 정의되어있음을 컴파일러에게 알려주는 용도

함수의 선언 vs 정의

// 선언 - 함수가 이런 시그니처를 가지고 있다는 것을 알림 int add(int a, int b); // 정의 - 함수의 실제 동작 구현 int add(int a, int b) { return a + b; }
C
복사

.h 파일 & .c파일

.h 파일 : 헤더 파일

선언
함수 선언, 전역 변수 선언, 매크로, 구조체 정의 등이 포함
여러 .c 파일에서 공유하려는 선언을 포함시킴
// math_utils.h #ifndef MATH_UTILS_H #define MATH_UTILS_H // 함수 선언(사실 extern이 기본적으로 포함) : 명시적으로 extern해도 됨 int add(int a, int b); // 전역 변수 선언 : "다른 곳 어딘가에 정의되어있으니까 찾아서 써!" extern int counter; #endif
C
복사

.c 파일 : 소스 파일

정의
함수 본체나 전역 변수의 실제 구현에 해당
// math_utils.c #include <stdio.h> #include "math_utils.h" int counter = 0; int add(int a, int b) { counter++; return a + b; }
C
복사
// main.c #include "math_utils.h" #include <stdio.h> int main() { int result = add(5, 10); printf("Result : %d\n", result); return 0; }
C
복사