줘이리의 인생적기

06. [C++] 함수 선언, 정의 본문

공부/C++

06. [C++] 함수 선언, 정의

줘이리 2021. 8. 27. 23:00
728x90

함수의 선언과 정의는 무엇인지, 어떻게 하는지 공부해보려고 합니다.

 

함수 선언은 아래와 같은 형태 입니다.

함수 정의는 아래와 같은 형태 입니다.

 

선언과 정의는 어디에 어떻게 해야할까요?

 

먼저 설명을 하자면,

main 함수가 제일 아래에 있고 함수들은 main 함수보다 위에 있을 때 선언은 필요가 없습니다.

하지만 main 함수보다 다른 함수들이 아래에 있을 때 전방 선언이 필요합니다.

 

예제를 통해 알아보겠습니다.

 

먼저, main 함수가 아래에 있는 형태 예제를 보겠습니다.

#include <iostream>

using namespace std;

int add(int a, int b)
{
	return a + b;
}

double multi(double a, double b)
{
	return a * b;
}

int main() {

	int x = add(2, 3);
	double y = multi(2, 3);
	
	cout << "x = " << x << endl;
	cout << "y = " << y << endl;

	return 0;
}

실행이 잘 됩니다.

 

다음은 main 함수가 위에 있는 형태 예제 입니다.

#include <iostream>

using namespace std;

int main() {

	int x = add(2, 3);
	double y = multi(2, 3);

	cout << "x = " << x << endl;
	cout << "y = " << y << endl;

	return 0;
}

int add(int a, int b)
{
	return a + b;
}

double multi(double a, double b)
{
	return a * b;
}

 

빌드 오류가 발생했네요.

 

main함수안에 있는 사용자 함수가 돌기 전에 사용자 정의 함수가 있다는 것을 알려주어야 합니다.

 

해결책인 전방 선언을 하겠습니다.

 

#include <iostream>

using namespace std;

//전방 선언
int add(int a, int b);
double multi(double a, double b);

int main() {

	int x = add(2, 3);
	double y = multi(2.0, 3.0);

	cout << "x = " << x << endl;
	cout << "y = " << y << endl;

	return 0;
}

int add(int a, int b)
{
	return a + b;
}

double multi(double a, double b)
{
	return a * b;
}

실행이 잘 됩니다.

 

'공부 > C++' 카테고리의 다른 글

08. [C++] 헤더가드  (0) 2021.09.01
07. [C++] 헤더파일(.h)  (0) 2021.08.30
05. [C++] 지역 범위(local scope)  (0) 2021.08.25
04. [C++] 함수, 함수명 변경, break point  (0) 2021.08.23
03. [C++] cout, cin, escape sequence  (0) 2021.08.20