Home 선언(declartion)과 정의(definition)의 차이
Post
Cancel

선언(declartion)과 정의(definition)의 차이

  • 본 글에서는 선언과 정의의 차이를 소개한다.
  • 해당 용어들은 코딩 규칙에서 가이드라인에서 자주 언급된다.

선언

  • 컴파일러에게 변수의 정보만을 제공하며, 실제 메모리를 사용하지 않는다.
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++/

This post is licensed under CC BY 4.0 by the author.

표준에서 정의되지 않은 행동

MISRA C 2012_05_08, 09 외부 및 내부 연결을 가지는 변수와 함수 식별자는 유일해야 한다.

Comments powered by Disqus.

Trending Tags