본문 바로가기

BackEnd/C

함수의 선언과 정의

반응형

1. 잘못된 위치에 놓여있는 함수의 정의


- C프로그램은 위에서 아래로 컴파일이 진행된다.


- 컴파일러가 컴파일 하지 않은 함수의 호출문에서는 에러가 발생한다.




위처럼 Increment함수를 호출할때, 메인함수를 먼저 컴파일하고 Increment함수를 컴파일했기 때문


 에러가 발생한다. 즉 함수는 호출되기 이전에 정의 되어야 한다. 하지만 함수의 선언을 통해 이렇


게 위치를 바꾸지 않고도 에러가 발생하지 않을 수 있다.


2. 함수의 선언을 통해서 원하는 위치에 함수 정의하기


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main(void)
{
    int num = 2;
 
    int Increment(int n);/* Increment 함수의 선언 */
 
    num = Increment(num);
    printf("num: %d \n", num);
 
    num = Increment(num);
    printf("num: %d \n", num);
 
    num = Increment(num);
    printf("num: %d \n", num);
 
    return 0;
}
 
int Increment(int n)
{
    n++;
    return n;
}
cs


위 처럼 함수의 선언은 다음 3가지를 알려야 한다.


1) 함수의 이름

2) 함수의 매개변수 형태

3) 함수의 반환형 정보


이렇게 미리 함수의 선언을 통해 함수의 정의 위치를 바꾸지 않고도 에러가 발생하지 않을 수 있다.




3. 함수의 선언은 가급적 함수안이 아니라 함수 밖 위쪽에 두면 좋다.


2번의 예제처럼 함수의 선언문을 메인함수내에 삽입하면 Increment 함수의 호출이 허용되는 위치]


도 메인함수 내로 제한되어 버린다.


따라서 함수의 선언은 아래와 같이 메인함수 밖으로 빼내는 것이 일반적이다.



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
26
27
28
int Increment(int n);  /* Increment 함수의 선언 */
int TwoIncrement(int n);
 
int main(void)
{
    int num = 2;
 
    num = Increment(num);
    printf("num: %d \n", num);
 
    num = TwoIncrement(num);
    printf("num: %d \n", num);
 
    return 0;
}
 
int TwoIncrement(int n)
{
    n = Increment(n);
    n = Increment(n);
    return n;
}
 
int Increment(int n)
{
    n++;
    return n;
}
cs







반응형