- 본 글에서는 선언과 정의의 차이를 소개한다.
- 해당 용어들은 코딩 규칙에서 가이드라인에서 자주 언급된다.
선언
- 컴파일러에게 변수의 정보만을 제공하며, 실제 메모리를 사용하지 않는다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// extern 변수 선언
extern int a;
// 함수 선언
int a();
// typedef
typedef unsigned int UINT;
// 매크로 선언
#define SUM(a, b) (a + b)
// 구조체 선언
struct st s ;
// 열거형 선언
enum DayOfWeek week;
정의
- 컴파일러에게 실제 변수를 생성하도록 하며, 실제 메모리를 사용한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 변수 정의
int a;
// 함수 정의
int a()
{
return 0;
}
// 구조체 정의
struct st {
int x;
int y;
};
// 열거형 정의
enum DayOfWeek {
Sunday = 0,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
};
선언과 정의
- 한 문장에서 선언과 정의가 가능하다.
1
2
3
4
5
// static 변수 선언과 정의
static int a = 5;
// 변수 선언과 정의
int a = 5;
출처: https://zetawiki.com/wiki/C%EC%96%B8%EC%96%B4_%EC%84%A0%EC%96%B8%EA%B3%BC_%EC%A0%95%EC%9D%98_%EC%B0%A8%EC%9D%B4%EC%A0%90
http://www.goldsborough.me/c/c++/linker/2016/03/30/19-34-25-internal_and_external_linkage_in_c++/
Comments powered by Disqus.