C언어 선언과 정의 차이점

1 개요[ | ]

선언과 정의 차이점
Difference between Declaration and Definition
  • 선언과 정의의 가장 큰 차이점은 메모리가 할당되는지를 보면 된다.

2 선언[ | ]

  • 컴파일러에게 변수의 정보만을 준다.
  • 실제 메모리를 사용하지는 않는다.
  • 그러한 변수가 있다는 정보(메타데이터)만 있고 실제 데이터는 없는 것이다.
  • 물론 메타데이터만 있더라도 전혀 메모리를 사용하지 않는 것은 아니고, 선언 그 자체에 대한 메모리는 사용한다.
  • 선언만으로는 그 선언이 가리키는 실체에 대해 메모리를 할당하지는 않는다는 것이다.
  • 비유하자면 건물의 명칭은 장부에 기록하지만, 실제 건물을 짓지는 않은 상황이라 할 수 있다.
extern int a;
int a();
struct a;
typedef unsigned int UINT;
#define SUM(a, b) (a + b)

3 정의[ | ]

  • 컴파일러에게 실제 변수를 생성하도록 한다.
  • 실제 메모리를 사용한다.
int a;
int a()
{
    return 0;
}
struct x {
    int x;
    int y;
};

4 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}