본문 바로가기

Programming/ C Language

[C] 함수 프로토타입이란 무엇일까?

728x90
반응형

□ C에서 함수를 작성하였는데 warning이 발생하거나 실행이 안되는 경우가 있습니다.

main() {
	int fir, sec, res;
	fir = 5;
	sec = 3;

	res = sum(fir, sec);

	printf("%d", res);
}

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

▷ warning C4013: 'sum'이(가) 정의되지 않았습니다. extern은 int형을 반환하는 것으로 간주합니다.

 

 

□ 이런 경우 정의한 함수를 main 위로 올려주거나, main 위에 함수를 선언해주면 됩니다.

int sum(int a, int b) {
	return a + b;
}
main() {
	int fir, sec, res;
	fir = 5;
	sec = 3;

	res = sum(fir, sec);

	printf("%d", res);
	getchar();

}

이런식으로 main 위로 올려 정의를 하면 컴파일러가 미리 함수의 정의를 알고 있기에 프로토타입이 필요하지 않습니다.

int sum(int a, int b); //프로토타입
main() {
	int fir, sec, res;
	fir = 5;
	sec = 3;

	res = sum(fir, sec);

	printf("%d", res);
	getchar();

}

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

main 위에 함수를 선언해줍니다. 이렇게 선언한 것을 함수의 프로토타입이라고 합니다.

 

main 다음에 함수가 있을 경우 컴파일러에게 미리 함수가 있는것을 알려주어야 정상적으로 작동할 수 있습니다.

 

 

 

반응형