컴퓨터/C
C언어에서는 함수와 함수들이 서로 호출하는 형태로 프로그램이 구동됩니다.
프로그래머들을 C언어에서 함수를 사용하기 위해서 선언과 정의를 하고 그 함수를 호출하여 사용합니다.
외부 소스코드에서 작성된 함수를 사용하기 위해서는 extern 키워드와 함께 함수의 원형을 설명해 주어야 사용 가능합니다. 그렇다면 동일한 내부 소스코드에서 함수의 정의와 선언은 어떻게 이루어질까요?
#include<stdio.h>
void printintro()
{
printf("함수에서 함수를 호출 할 때 문제 발생");
println(); // 아래에서 정의된 println함수를 호출
}
void println()
{
printf("\n");
}
int add(int a, int b)
{
return a + b;
}
int main()
{
printintro();
return 0;
}
위 소스코드의 경우 printintro라는 함수를 선언과 정의를 하는 부분에 println의 함수를 호출하도록 선언되어있습니다.
이런 경우 소스코드를 컴파일하는 경우 순서대로 컴파일을 진행하기 때문에 컴파일러는 아직 정의되지 않은 println이 정의되지 않았다 라는 에러 메시지를 발생시키게 됩니다.
위와 같은 이유 때문에 컴파일러에게 작성한 소스코드에 함수명이 정의되어 있다라는 것을 알려주기 위해 함수의 원형을 합니다. 함수의 원형을 선언하게 되면 이런 문제들을 극복할 수 있고 좀 더 효율적으로 소스코드를 관리할 수 있습니다.
함수의 원형을 선언하는 방법은 아래와 같습니다.
#include<stdio.h>
//함수의 원형 선언 부
void printintro();
void println();
int add(int, int);
int minus(int a, int b);
//메인 프로그램 작성
int main()
{
printintro();
return 0;
}
//실제 함수들의 정의
void printintro()
{
printf("함수에서 함수를 호출 할 때 문제 발생");
println();
}
void println()
{
printf("\n");
}
int add(int a, int b)
{
return a + b;
}
int minus(int a, int b)
{
return a - b;
}
이런 식으로 함수의 원형을 선언하게 된다면 main프로그램 아래에 함수들을 선언을 해도 문제가 없게 됩니다.
조금 더 가독성이 좋은 소스코드를 만들 수 있게 되는 것입니다.
C 언어 - 문자열 처리 함수(strlen, strcat, strcpy, strcmp) (0) | 2021.06.30 |
---|---|
C 언어 - sizeof 함수 (0) | 2021.06.29 |
C 언어 - 소스파일 나누기 (0) | 2021.06.28 |
C 언어 - static 키워드 (정적 키워드) (0) | 2021.06.26 |
C 언어 - Stack Frame (스택 프레임) (0) | 2021.06.26 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet