기초 cs- 함수 2

킴스코딩클럽·2022년 9월 29일
1

CS기초 시리즈

목록 보기
21/71

함수의 선언과 정의를 분류하는 이유

선언이 먼저 되있어야 그다음 쓸 수 있다

declaration(선언): 반환타입 + 함수이름(매개변수목록)

definition(정의): 선언 + { ~~~ } 부분 전부

int Squrae(int x);
//선언
// int 함수의 타입(int로 반환) Square 함수의 이름
// 함수에는 타입이 있다

int Square(intx)
{
return x *x;
}
//정의
int main()
{
	int x
}
전방 선언의 방식
void g();
//g의 선언

//f의 선언과 정의가 같이 있는 경우
void f()
{
	g(); //undeclared identifier g 오류
}

//g의 정의
void g()
{
	f(); //g와 f함수의 위치를 바꿔도 오류가 나온다
}
//순환 호출
//이 문제를 해결하기 위해서는 전방선언(선언을 먼저)으로 해결

int main()
{
	
}

다른 사용방법

void function1();
void function2();


int main()
{
	
}

void function1()
{

}
void function2()
{

}

만약 선언만 하고 정의를 하지않는다면
link error(undefined symbol)
선언과 정의가 연결되지 않음
예를들어 main.obj와 iostram.obj가 link되는 것은
main의 선언과 iostream의 정의를 연결하는 것으로도 이해가능
compile + link 두 개의 작업을 합쳐서 build 이해
컴파일러의 기능은 컴파일러 회사마다 다름


entry point

int main()
{
	return 0; //메인함수한정으로 return 0 생략되어 있지만 끝에 도달시 기능이 실행됨(생략가능하도록)
}
//main function - cppreference 검색

entry point는 os에서 부름
운영체제는 앱이 실행되고나서 종료됨을 알고있음
종료되었더라도 정상적으로 종료된건지 문제가 생긴건지 알수 없음 그래서 리턴값 0을 가지고 정상종료가 됬다는 것을 간접적으로 이해 그래서 return value가 들어있는 것임

log : 운영체제가 남겨놓은 기록 모음 프로그램이 어떻게 피드백되었는지 알려줌

윈도우즈 포인트에서는 entry point가 바뀜 (운영체제가 정해놓은 규칙이고 트랜드에 맞게 변화하고 있음)
메인함수에서는 반환값을 안써도되도록 바뀜



#include <iostream> //include가 하는 역할은 선언을 가져오는 것
#include<cmath> // c언어에서 제공하는 수학 기능을 추가

int main()
{
	std::cout << pow(2, 2) << std::endl; //선언으로 이동시 cmath에 들어있음
}
//소스 파일의 외부종속성
profile
공부 기록용

0개의 댓글